使用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 的话就会过滤掉