在MybatisPlus queryWrapper中 使用or导致查询条件失效问题解决方案:
一、现象:
问题是我们先查询name是小明,手机号或者邮箱包含123的游客数
queryWrapper写法
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("name", "小明");
queryWrapper.like("email", "123").or().like("phone", "123");
出来的sql是这样的,很明显结果不是我们想要的结果:
select * from user_info where deleted = 0 and
( name = '小明' AND email LIKE '%123%' OR phone LIKE '%123%');
我们想要的效果是:
select * from user_info where deleted = 0 and
name = '小明' AND (email LIKE '%123%' OR phone LIKE '%123%');
解决方案,写法:
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("name", "小明");
queryWrapper.and(userInfoQueryWrapper -> userInfoQueryWrapper.like("email", "123").or().like("phone", "123"));