Mybatisplus的or语句写法

时间:2024-10-20 17:38:27
在开发的时候,我们发现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 > ?;