在开发的时候,我们发现Mybatis-plus想实现or语句的写法的时候总对不上位置?
- 比如
select * from student where id = ? and age = ? and (age > ? or mark > ?);
这种sql语句我们怎么都写不成?(T . T)
只需按照以下的Mybatis-plus格式来写,你就可以拥有我们想要的sql语句!
LambdaQueryWrapper<T> wrapper = getInitQueryWrapper()
.eq(Student::getStudentId, student.getId())
.eq(Student::getRegisterTime, registerTime)
.and(o -> o.gt(Student::getAge, BaseConstant.TEN).or().gt(Student::getMark, BaseConstant.TEN));
错误示范:
QueryWrapper<User> userWrapper = new QueryWrapper<User>();
userWrapper.eq("name", name);
userWrapper.eq("pwd", pwd).or().eq("phone", phone);
这种写法最后的sql语句是
select * from student where id = ? and age = ? and age > ? or mark > ?;