MybatisPlus中使用条件构造器.or

时间:2025-03-10 10:58:45

使用mybatis plus时,使用.or()去拼接查询条件时

错误的示范

studentService.list(new QueryWrapper<Student>().like("name", name).or().like("add", addr))
  • 1

生成的查询语句是

SELECT id,name,addr FROM Student WHERE is_delete=0 AND name LIKE '%王%' OR addr LIKE '%上%';
  • 1

这个时候就会发现 is_delete=0 和 or 成并列的条件了,如果一个文件被删了 但是addr为“上”就会被查出来,这是不被允许的



正确的示范

studentService.list(new QueryWrapper<Student>().and(wrapper->wrapper.like("name", name).or().like("age", age)))
  • 1

生成的查询语句是

SELECT id,name,addr FROM Student WHERE is_delete=0 AND (name LIKE '%王%' OR addr LIKE '%上%');
  • 1

这个时候会给 or 并列的条件加上一个括号,如果 is_delete=0 的话就会过滤掉

相关文章