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)));
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 < ?))
最近在使用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 = ?)