第1个回答 2022-06-10
看了一下市面上的文章和我的需求差的不多,但是不是我用不起来,后来自己去测试终于找到了我自己需要的方法。
前面都是一样的,使用criteria的andEqualTo方法拼接sql,最后的or是怎么实现呢?
这种情况下你一个criteria是实现不了的,你再新建一个criteria,比如说他叫criteria2,然后criteria2.orEqualTo去实现你自己的OR实现,最后是这样的example.and(criteria2),这样输出的sql就是select * from 表 where ( ( valid = 1 ) and ( a=1 or b =2 ))。我觉得这样还是挺简单的。
criteria1.andEqualTo(valid= 1);
criteria2.orEqualTo(a=1);
criteria2.orEqualTo(b=1);
最后example.and(criteria2),最后把example放进去执行就可以得到select * from 表 where ( ( valid = 1 ) and ( a=1 or b =2 ))这样的sql了。