MybatisPlus queryWrapper 使用or导致查询条件失效

在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"));

猜你喜欢

转载自blog.csdn.net/Just_do_it_HZF/article/details/131947409
今日推荐