Mybatis-Plus的or拼接是个坑:
这是需要的结果:
queryWrapper.and(c->c.or(a->a.eq("", "SIGNING")
.eq("", "SIGNING")).or(b->b.eq("","INVALIDING")
.eq("","INVALIDING"))).eq("qcs.is_del",0);
执行的sql:
where
((qcs3.status = 'SIGNING'
and qcs.status = 'SIGNING')
or (qcs.status = 'INVALIDING'
and qcs3.status = 'INVALIDING'))
and qcs.is_del = 0
但是很容易写成:
queryWrapper.and(a->a.eq("", "SIGNING")
.eq("", "SIGNING")).or(b->b.eq("","INVALIDING")
.eq("","INVALIDING")).eq("qcs.is_del",0);;
执行的sql:
where
((qcs3.status = 'SIGNING'
and qcs.status = 'SIGNING')
or (qcs.status = 'INVALIDING'
and qcs3.status = 'INVALIDING'))
and qcs.is_del = 0
or拼接常用的写法:
例1: eq(“id”,1).or().eq(“name”,“老王”)—>id = 1 or name = ‘老王’
例2: or(i -> (“name”, “李白”).ne(“status”, “活着”))—>or (name = ‘李白’ and status <> ‘活着’)