Mybatis plus where添加括号方式

网友投稿 1319 2022-09-04


Mybatis plus where添加括号方式

目录Mybatis plus where添加括号where或and后面的条件用括号括起来

Mybatis plus where添加括号

List list = xxxx;

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> fansList(@RequestParam(value = "bid") Integer bid,

http:// @RequestParam(value = "nickName", required = false) String nickName) {

try {

QueryWrapper queryWrapperw = new QueryWrapper();

queryWrapperw.eq("pid", bid).or().eq("pid2",bid);

if (nickName != null && !nickName.equals("")) {

queryWrapperw.like("nick_name", nickName);

}

queryWrapperw.eq("deleted", false);

List litemall_businessList = businessService.list(queryWrapperw);

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> fansList(@RequestParam(value = "bid") Integer bid,

@RequestParam(value = "nickName", required = false) String nickName) {

try {

QueryWrapper queryWrapperw = new 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 litemall_businessList = businessService.list(queryWrapperw);

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小时内删除侵权内容。

上一篇:Flask实现异步非阻塞请求功能(flask 异步请求)
下一篇:Scrapy随机切换用户代理User-Agent(scrapy使用代理)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~