微前端架构如何改变企业的开发模式与效率提升
919
2022-11-08
Mybatis plus where添加括号方式
目录Mybatis plus where添加括号where或and后面的条件用括号括起来
Mybatis plus where添加括号
List
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.and(wrapper -> {
for(String bm : list) {
wrapper.like("xxxxx", bm).or();
}
return wrapper;
});
queryWrapper.like("xx", "xxx");
打印的效果大概如下:
select * from table_name where (colA like '%xx%' or colA like '%xx%') and colB like '%xx%'
where或and后面的条件用括号括起来
今天在使用mybatisplus时需要将and后面的or条件使用括号包起来
@ApiOperation(value = "查看粉丝列表", notes = "查看粉丝列表")
@PostMapping("/fansList")
public ResultVO
http:// @RequestParam(value = "nickName", required = false) String nickName) {
try {
QueryWrapper
queryWrapperw.eq("pid", bid).or().eq("pid2",bid);
if (nickName != null && !nickName.equals("")) {
queryWrapperw.like("nick_name", nickName);
}
queryWrapperw.eq("deleted", false);
List
return ResponseUtil.okList(litemall_businessList);
} catch (Exception e) {
e.printStackTrace();
return ResponseUtil.serious();
}
}
打印输出的sql
select * form litemall_business where deleted=0 and pid=1 or pid2=1
此条sql是没办法满足我需要的数据
实际上的我需要执行的sql是需要把and后面的or用()包起来作为一个条件来查询
所以mybatisplus的原生查询方法需要修改为:
@ApiOperation(value = "查看粉丝列表", notes = "查看粉丝列表")
@PostMapping("/fansList")
public ResultVO
@RequestParam(value = "nickName", required = false) String nickName) {
try {
QueryWrapper
queryWrapperw.and(wrapper -> wrapper.eq("pid", bid).or().eq("pid2", bid));
// queryWrapperw.eq("pid", bid).or().eq("pid2",bid);
if (nickName != null && !nickName.equals("")) {
queryWrapperw.like("nick_name", nickName);
}
queryWrahttp://pperw.eq("deleted", false);
List
return ResponseUtil.okList(litemall_businessList);
} catch (Exception e) {
e.printStackTrace();
return ResponseUtil.serious();
}
}
这样sql打印出来就是:
select * form litemall_business where deleted=0 and (pid=1 or pid2=1)
这样就满足了我把and后面的or作为一个整体
这里需要注意的是:我的mybatisplus版本是3.0.7.1,这个版本中是没有andNew()的方法,所以需要使用这种方法时查看你的版本是否和我的一样,还有一点要注意,不要丢弃了语句中的.and()
这里顺便补充一下andNew()的写法
//mybatisplus版本3.0.7.1 jdk1.8
queryWrapperw.and(wrapper -> wrapper.eq("pid", bid).or().eq("pid2", bid));
//执行sql
select * form litemall_business where deleted=0 and (pid=1 or pid2=1)
//mybatisplus版本低于3.0.7.1
queryWrapperw.andNew().eq("pid", bid).or().eq("pid2", bid);
//执行sql
select * form litemall_business where deleted=0 and (pid=1 or pid2=1)
其实最终执行的sql是一样的
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~