当我们有or筛选时
比如
select *from SHANGPIN where FJSX1='000' and (FJSX2='11' or FJSX2='000')
select *from SHANGPIN where FJSX1='000' and FJSX2='11' or FJSX2='000'
我们都知道这两个筛选结果是不同的
QueryWrapper<EShangpin> wrapper=new QueryWrapper();
wrapper.eq("fjsx1","000");
wrapper.or(w->w.eq("fjsx2","11"));
wrapper.or(w->w.eq("fjsx2","000"));
这样写的话就像第二种一样没有括号将or括起来
WHERE (fjsx1 = #{ew.paramNameValuePairs.MPGENVAL1} OR ( (fjsx2 = #{ew.paramNameValuePairs.MPGENVAL2}) ) OR ( (fjsx2 = #{ew.paramNameValuePairs.MPGENVAL3}) ))
我们可以用nested连接
QueryWrapper<EShangpin> w2=new QueryWrapper();
w2.eq("fjsx1","000");
w2.nested(w -> w.eq("fjsx2", "11").or().eq("fjsx2","000"));
结果就是这样的有括号
WHERE (fjsx1 = #{ew.paramNameValuePairs.MPGENVAL1} AND ( (fjsx2 = #{ew.paramNameValuePairs.MPGENVAL2} OR fjsx2 = #{ew.paramNameValuePairs.MPGENVAL3}) ))