关于MyBatis Plus中使用or和and问题

 更新时间:2020年12月26日 10:46:24   作者:mingruixu  
这篇文章主要介绍了关于MyBatis Plus中使用or和and问题,需要的朋友可以参考下

最近在使用MyBatis Plus,发现在拼接条件的时候,and和or会出问题,比如下面这种

QueryWrapper userWrapper = new QueryWrapper();
userWrapper.eq(“name”, name); userWrapper.eq(“pwd”,
pwd).or().eq(“phone”, phone);

这种写法拼出来的SQL语句是这样的:

select * from user where (name = ? and pwd= ? or phone = ?)

这样子是肯定不行的,于是去官网查询,发现正确的写法是这样的

QueryWrapper userWrapper = new QueryWrapper();
userWrapper.eq(“name”, name); userWrapper.and(wrapper ->wrapper.eq(“pwd”, pwd).or().eq(“phone”, phone));

select * from user where name = ? and ( pwd= ? or phone = ?)

补充:MyBatisPlus中and与or的连用

 QueryWrapper<User> userWrapper = new QueryWrapper<>();
  String type = (String) map.get("type");
  if(StringUtils.isNotBlank(type)) {
    userWrapper.eq("is_admin", "admin".equals(type) ? true : false);
  }
  String keys = (String) map.get("key");
  if(StringUtils.isNotBlank(keys)) {
    userWrapper.and(wrapper -> wrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys));
  }

对应打印的SQL语句为:

SELECT
    id,
    login_name AS loginName,
    is_admin AS adminUser,
    ...
    del_flag AS delFlag,
    remarks 
  FROM
    sys_user 
  WHERE
    is_admin = 0 
    AND (
      login_name LIKE '%j%' 
      OR tel LIKE '%j%' 
      OR email LIKE '%j%' 
    )

注意:

userWrapper.and(…)中的and为后面的条件加上了括号,如果没有and(),直接使用

userWrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys)

这一部分对应的SQL语句是不会被括号包围的(若使用or(…),同理);

2. and(…)中的wrapper -> wrapper,注意名称需要相同。

到此这篇关于关于MyBatis Plus中使用or和and问题的文章就介绍到这了,更多相关MyBatis Plus使用or和and内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解MyBatis-Plus Wrapper条件构造器查询大全

    详解MyBatis-Plus Wrapper条件构造器查询大全

    这篇文章主要介绍了详解MyBatis-Plus Wrapper条件构造器查询大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot项目发送钉钉消息功能实现

    SpringBoot项目发送钉钉消息功能实现

    在工作中的一些告警需要发送钉钉通知,有的是发给个人,有的要发到群里,这时项目就需要接入钉钉,实现发消息的功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-02-02
  • Spring @Conditional注解从源码层讲解

    Spring @Conditional注解从源码层讲解

    @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean,这篇文章主要介绍了Spring @Conditional注解示例详细讲解,需要的朋友可以参考下
    2023-01-01
  • java HashMap详解及实例代码

    java HashMap详解及实例代码

    这篇文章主要介绍了java HashMap详解及实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • 详解springboot设置cors跨域请求的两种方式

    详解springboot设置cors跨域请求的两种方式

    这篇文章主要介绍了详解springboot设置cors跨域请求的两种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Java静态代理和动态代理的深入讲解

    Java静态代理和动态代理的深入讲解

    这篇文章主要给大家介绍了关于Java静态代理和动态代理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java代理模式实例分析

    Java代理模式实例分析

    这篇文章主要介绍了Java代理模式,结合实例形式对比分析了java代理模式的使用方法与相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • Eclipse下使用ANT编译提示OutOfMemory的解决方法

    Eclipse下使用ANT编译提示OutOfMemory的解决方法

    由于需要使用ANT编译的代码比较多,特别是在第一次变异的时候,会出现OutOfMemory错误。并提示更改ANT_OPTS设定。
    2009-04-04
  • Java中java.sql.SQLException异常的正确解决方法(亲测有效!)

    Java中java.sql.SQLException异常的正确解决方法(亲测有效!)

    SQLException是在Java中处理数据库操作过程中可能发生的异常,通常是由于底层数据库操作错误或违反了数据库规则而引起的,下面这篇文章主要给大家介绍了关于Java中java.sql.SQLException异常的正确解决方法,需要的朋友可以参考下
    2024-01-01
  • SpringBoot+Dubbo+Zookeeper知识整合过程详解

    SpringBoot+Dubbo+Zookeeper知识整合过程详解

    本文首先介绍了分布式系统的基本概念和分类,包括单一应用架构、垂直应用架构、分布式服务架构和流动计算架构,通过一个完整的Spring Boot + Dubbo + Zookeeper框架搭建示例,展示了如何将这些技术整合到一个实际的项目中,感兴趣的朋友一起看看吧
    2025-02-02

最新评论