mybatisplus where QueryWrapper加括号嵌套查询方式

目录
  • where QueryWrapper加括号嵌套查询
  • mybatisplus查询语句加括号(.or(),.and())

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相当于一个括号

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MybatisPlus使用queryWrapper如何实现复杂查询

    目录 使用queryWrapper实现复杂查询 自定义的queryWrapper实现查询 声明提要 核心代码 使用queryWrapper实现复杂查询 // mp实现负责查询操作 @Test public void testSelectQuery(){ //1,创建QueryWrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 2,通过QueryWrapper设置条件 // ge大于等于 gt大于 le小于等

  • 关于QueryWrapper,实现MybatisPlus多表关联查询方式

    目录 QueryWrapper实现MybatisPlus多表关联查询 1.dao层接口使用Select注解写SQL 2.service层代码示例 3.反射工具类 4.判空工具类 MybatisPlus QueryWrapper简单用法 QueryWrapper实现MybatisPlus多表关联查询 1.dao层接口使用Select注解写SQL 重点:@Param("ew") Wrapper参数是必须,因为${ew.customSqlSegment} 底层其实就是where 条件,所以为

  • MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决

    目录 LambdaQueryWrapper使用 int默认值问题 问题现象 解决方法 问题分析 小结一下 lambdaquerywrapper in使用样例 直接使用列名报错 下面这样ok LambdaQueryWrapper使用 int默认值问题 问题现象 一顿操作,感觉不可能有问题,调试后发现,没传任何参数,日志里面居然有两个参数, 进入对象中发现 解决方法 int类型替换成 Integer 类型 问题消失 问题分析 1.了解一下int int: int 数据类型是32位.有符号的以二进制补

  • mybatisplus如何在xml的连表查询中使用queryWrapper

    目录 在xml的连表查询使用queryWrapper 在mapper接口中定义方法 在mapper xml中 调用该方法 mapper.xml 配合queryWrapper写法 mapper中的接口这么写 xml中${ew.customSqlSegment} 在xml的连表查询使用queryWrapper 在mapper接口中定义方法 List<Map<String,Object>> linkUserAndDept(@Param("ew1") Wrapper&l

  • mybatisplus where QueryWrapper加括号嵌套查询方式

    目录 where QueryWrapper加括号嵌套查询 mybatisplus查询语句加括号(.or(),.and()) where QueryWrapper加括号嵌套查询 之前的代码是这个样子的: QueryWrapper<RyxyMemberEntity> wrapper = new QueryWrapper<>();     wrapper.eq("phoneNumber", phone);     if (StringUtils.isEmpty(sce

  • lambdaQueryWrapper多条件嵌套查询方式

    目录 lambdaQueryWrapper多条件嵌套查询 表结构如下 下面是根据条件生成的SQL语句 LambdaQueryWrapper 常用条件 lambdaQueryWrapper多条件嵌套查询 需求:根据条件获取一段时期内按照年份和周存储的数据 表结构如下 userNetType moduleName cityName subjectCname subjectEname pv uv year week 1 1 江苏省 死神专题 sszt 100 70 2019 51 1 1 江苏省 海贼

  • Java之Mybatis多层嵌套查询方式

    目录 Mybatis多层嵌套查询 表的存储sql文件 实体类 XML Mybatis多层嵌套查询(多对多) 依赖 实体类Setmeal 实体类CheckGroup 实体类CheckItem mapper层 测试 Mybatis多层嵌套查询 三张表:user article blog 表的存储sql文件 /* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50620 Source Host

  • Mybatis-Plus时间范围查询方式详解

    目录 方式一 方式二 请求方式 传参类型 方式一 通过apply方法,来实现时间范围查询,该方法可用于数据库函数,动态入参的params对应前面applySql内部的{index}部分,这样是不会有sql注入风险的,反之会有! apply(boolean condition, String applySql, Object... params) 反例: queryWrapper.apply(StrUtil.isNotBlank(serviceItemListDto.getStartTime())

  • 使用Java的方式模拟Flutter的Widget实现多层括号嵌套

    我已经研究Flutter很长时间了.我就想既然Flutter用的Dart语言,而且括号又是嵌套多层,很多人都表示不是很理解,也不是很喜欢那么多层括号嵌套.其实完全不用担心,既然选择了它,就要接受它,当然是选择原谅它.废话少说,其实Java也是可以实现类似的语法的,下面带领大家作死的尝试一下使用Java模拟Flutter的Widget,欢迎各类开发人员前来观战. Flutter最重要的是 Widget ,首先我们来写一个类 Widget ,然后有一个 build 函数.如下所示: Tips: (我

  • MyBatis中一对多的xml配置方式(嵌套查询/嵌套结果)

    目录 MyBatis一对多的xml配置 嵌套查询 嵌套结果 一对多关联查询xml配置写法 情景概述 创建表 对应javaPojo 查询客户表client获取客户名下的附件信息 查询客户附件表client_file获取附件所属的客户信息 小结一下 MyBatis一对多的xml配置 用的是window上面的画图板,没法以文字的方式展示出来,见谅 嵌套查询 嵌套结果 一对多关联查询xml配置写法 情景概述 1.有一张客户表 Client ,存储客户信息, 姓名 name ,年龄 age等. 2.有一张

  • laravel多条件查询方法(and,or嵌套查询)

    说明 在日常开发中,经常会需要写多条件的数据库查询语句.在使用框架的情况下,单纯使用原生sql查询会导致结果与model无法对应,也就没有办法使用框架的一些便利的方法对结果集进行处理.尤其是laravel提供了非常多的对查询结果集进行处理的工具.所以最好是使用laravel提供的ORM进行多条件的数据库查询. 问题 比如需要执行这样一条sql语句 select * from homework where (id between 1 and 10 or id between 50 and 70)

  • MySQL中几种常见的嵌套查询详解

    目录 几种常见的嵌套查询——以学员成绩为例 含ANY或ALL关键词的嵌套查询 含IN关键词的嵌套查询 含EXISTS关键词的嵌套查询 [补充]关于IN和EXISTS两个关键词还有两个延伸关键词NOT IN和NOT EXISTS 附:其他使用方法和注意 总结 几种常见的嵌套查询——以学员成绩为例 嵌套查询,也称为子查询,是实际工作中经常用到的一种查询方式.子查询其实就是在已有的查询语句中的where后面再嵌套一层查询语句,也就是把内层查询结果当做外层查询参照的数据表来使用. 在工作中,经常会遇见4

随机推荐