先说结论:一个括号等于一个QueryWrapper
例:
假设一句sql
select * from tbl where 1 = 1 (and is_deleted = 0 and ((id = 'id1' and status != 1) or (id = 'id2' and status != 2)))
where 1 =1 之后 4个括号,即4个QueryWrapper。
实体类:
@Data
@TableName("tbl")
@Accessors(chain = true)
public class TestEntity {
private String id;
private Integer status;
private Integer isDeleted;
}
最外层一个wrapper,child一个wrapper,sub1、sub2两个wrapper。
Wrappers.<TestEntity>lambdaQuery()
.eq(TestEntity::getIsDeleted, 0)
.and(child ->
child.or(sub1 ->
sub1.eq(TestEntity::getId, "id1")
.ne(TestEntity::getStatus, 1))
.or(sub2 ->
sub2.eq(TestEntity::getId, "id1")
.ne(TestEntity::getStatus, 2)));
小功告成