一聚教程网:一个值得你收藏的教程网站

热门教程

mybatisplus where QueryWrapper加括号嵌套查询方式代码示例

时间:2022-06-29 01:58:16 编辑:袖梨 来源:一聚教程网

本篇文章小编给大家分享一下mybatisplus where QueryWrapper加括号嵌套查询方式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

之前的代码是这个样子的:

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

热门栏目