mybatisplus where QueryWrapper加括号嵌套查询方式
更新时间:2022年01月11日 11:34:49 作者:职业秃头程序员
这篇文章主要介绍了mybatisplus where QueryWrapper加括号嵌套查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
where QueryWrapper加括号嵌套查询
之前的代码是这个样子的:
QueryWrapper<RyxyMemberEntity> wrapper = new QueryWrapper<>(); wrapper.eq("phoneNumber", phone); if (StringUtils.isEmpty(scenetype)){ wrapper.isNull("scenetype").or().eq("scenetype", ""); } wrapper.eq("delFlag", "0");
相对应的SQL语句如下:
WHERE( phoneNumber = 156****8888 AND scenetype IS NULL OR scenetype = "" AND delFlag = 0)
这并不是我想要的sql语句,查询的数据也不正确,对scenetype的查询应该是括起来的,满足其一条件即可,也就是这样:
WHERE( phoneNumber = 156****8888 AND (scenetype IS NULL OR scenetype = "") AND delFlag = 0)
相对应的代码应该这样写才对:
QueryWrapper<RyxyMemberEntity> wrapper = new QueryWrapper<>(); wrapper.eq("phoneNumber", phone); if(StringUtils.isEmpty(scenetype)) { wrapper.and( e -> e.isNull("scenetype") .or().eq("scenetype", "") ); } wrapper.eq("delFlag", "0");
mybatisplus查询语句加括号(.or(),.and())
java代码:
QueryWrapper<Entity> wrapper = new QueryWrapper<>(); wrapper.ne("id", param.getId()) wrapper.and(QueryWrapper -> QueryWrapper.eq("name", name).or().eq("mark", mark)); entityMapper.selectList(wrapper);
等价sql
SELECT id FROM t_entity WHERE (id <> ? AND (name = ? OR mark = ?))
每个and相当于一个括号
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java基于SpringBoot和tk.mybatis实现事务读写分离代码实例
这篇文章主要介绍了Java基于SpringBoot和tk.mybatis实现事务读写分离代码实例,读写分离,基本的原理是让主数据库处理事务性增、改、删操作,而从数据库处理SELECT查询操作,数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库,需要的朋友可以参考下2023-10-10Springboot之restTemplate的配置及使用方式
这篇文章主要介绍了Springboot之restTemplate的配置及使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10SpringBoot整合Log4j2实现自定义日志打印失效的原因及解决
本文给大家介绍了关于SpringBoot项目整合Log4j2实现自定义日志打印失效原因及解决办法,主要的原因是因为SpringBoot的logback包的存在,文中通过图文给大家了详细解决方法,需要的朋友可以参考下2024-01-01
最新评论