select * from emp
where 1=1 and (ename='20') and (ejob <> 'clerk') or (eleader like '%a%')
If written like this, adding or will make and not work, because at the beginning and filtered the data, and later or added the filtered data;
Correct way:
where 1=1 and (ename='20') and (ejob <> 'clerk') or (eleader like '%a%' and ejob <> 'clerk' and ename='20')
In this way, the data you want to filter will be filtered out;
Mybatis-plus writes like this:
queryWrapper.or(i->i.like("eleader","a").ne("clerk",'a'))