mybatis-plus QueryWrapper and or 连用并且实现分页

QueryWrapper and or 连用并分页

Page<TestEntity> rpage =
baseMapper.selectPage(
new Page<>(pageBean.getPageSize(), pageBean.getPageNum()),
new QueryWrapper<TestEntity>()
.eq("siteid", siteid)
.and(
wrapper ->
wrapper
.or()
.lt("createtime", updatetime)
.or()
.lt("deletetime", updatetime)
.or()
.lt("operatetime", updatetime)
.or()
.lt("updatetime", updatetime)));

and or 拼完后的结果是这样的

new QueryWrapper<TestEntity>()
.eq("siteid", siteid)
.and(
wrapper ->
wrapper
.or()
.lt("createtime", updatetime)
.or()
.lt("deletetime", updatetime)
.or()
.lt("operatetime", updatetime)
.or()
.lt("updatetime", updatetime)))
SELECT
*
FROM
t
WHERE
useflag = 1
AND (
siteid =?
AND (
createtime < ?
OR deletetime < ?
OR operatetime < ?
OR updatetime < ?))

使用or和and的问题

最近在使用MyBatis Plus,发现在拼接条件的时候,and和or会出问题

比如下面这种

QueryWrapper<User> userWrapper = new QueryWrapper<User>();
userWrapper.eq("name",name);
userWrapper.eq("pwd", pwd).or().eq("phone", phone);

这种写法拼出来的SQL语句是这样的

select *from user where (name = ?and pwd= ?or phone = ?)

这样子是肯定不行的,于是去官网查询,发现正确的写法是这样的

QueryWrapper<User> userWrapper = new QueryWrapper<User>();
userWrapper.eq("name",name);
userWrapper.and(wrapper -> wrapper.eq("pwd", pwd).or().eq("phone", phone));
select *from user where name = ?and ( pwd= ?or phone = ?)
推荐 收藏
评论(0) 阅读(553)
刷新评论 返回顶部
签名 : 行稳方能至远!
姚建奎最新博客