Mybatis plus where添加括号方式
程序员文章站
2022-06-16 12:46:29
目录mybatis plus where添加括号where或and后面的条件用括号括起来mybatis plus where添加括号list list = xxxx;que...
mybatis plus where添加括号
list<string> 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<resultlistvo<litemallbusiness>> fanslist(@requestparam(value = "bid") integer bid, @requestparam(value = "nickname", required = false) string nickname) { try { querywrapper<litemallbusiness> querywrapperw = new querywrapper<litemallbusiness>(); querywrapperw.eq("pid", bid).or().eq("pid2",bid); if (nickname != null && !nickname.equals("")) { querywrapperw.like("nick_name", nickname); } querywrapperw.eq("deleted", false); list<litemallbusiness> 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<resultlistvo<litemallbusiness>> fanslist(@requestparam(value = "bid") integer bid, @requestparam(value = "nickname", required = false) string nickname) { try { querywrapper<litemallbusiness> querywrapperw = new querywrapper<litemallbusiness>(); 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); } querywrapperw.eq("deleted", false); list<litemallbusiness> 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是一样的
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
上一篇: 银耳汤要熬多长时间
推荐阅读
-
Mybatis-plus 查询语句加括号(.or(),.and())
-
MyBatis-Plus通过插件将数据库表生成Entiry,Mapper.xml,Mapper.class的方式
-
MyBatis-Plus通过插件将数据库表生成Entiry,Mapper.xml,Mapper.class的方式
-
mybatis-plus分页传入参数后sql where条件没有limit分页信息操作
-
Spring boot方式使用MyBatis-Plus分页操作
-
详解mybatis-plus使用@EnumValue注解的方式对枚举类型的处理
-
mybatis-plus返回查询总记录数方式
-
Mybatis-Plus 新增获取自增列id方式
-
mybatis-plus添加数据时id自增问题及解决
-
Mybatis plus where添加括号方式