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计时器工具StopWatch的具体使用

    Java计时器工具StopWatch的具体使用

    计时器在很多地方都可以用到,本文主要介绍了Java计时器工具StopWatch的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 基于Properties类操作.properties配置文件方法总结

    基于Properties类操作.properties配置文件方法总结

    这篇文章主要介绍了Properties类操作.properties配置文件方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java I/O流之打印流详细使用方法教程

    Java I/O流之打印流详细使用方法教程

    java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作,下面这篇文章主要给大家介绍了关于Java IO流打印流详细使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • spring boot使用RabbitMQ实现topic 主题

    spring boot使用RabbitMQ实现topic 主题

    本篇文章主要介绍了spring boot使用RabbitMQ实现topic 主题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • java实现菜单树的示例代码

    java实现菜单树的示例代码

    这篇文章主要为大家详细介绍了java实现菜单树的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • 如何利用java中String类的substring()字符串截取最后一个字符

    如何利用java中String类的substring()字符串截取最后一个字符

    Java中的String是不可变的类型,因此substring()方法并不会改变原字符串,而是返回了一个新的字符串,这篇文章主要介绍了如何利用java中String类的substring()字符串截取最后一个字符,需要的朋友可以参考下
    2023-11-11
  • 详谈Spring对IOC的理解(推荐篇)

    详谈Spring对IOC的理解(推荐篇)

    下面小编就为大家带来一篇详谈Spring对IOC的理解(推荐篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java 并发编程中的锁机制示例详解

    Java 并发编程中的锁机制示例详解

    本文探讨了Java并发编程中的锁机制,包括锁的基本概念、Java中的锁类型如synchronized、ReentrantLock、ReadWriteLock、锁的优化策略以及如何避免死锁,文章强调了合理选择和优化锁使用对于提升程序并发性能的重要性,并提供了实际应用中的最佳实践,感兴趣的朋友一起看看吧
    2025-01-01
  • Java中的ArrayList集合源码解析

    Java中的ArrayList集合源码解析

    这篇文章主要介绍了Java中的ArrayList集合源码解析,ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组,需要的朋友可以参考下
    2023-12-12
  • Spring事务管理下synchronized锁失效问题的解决方法

    Spring事务管理下synchronized锁失效问题的解决方法

    这篇文章主要给大家介绍了关于Spring事务管理下synchronized锁失效问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03

最新评论