千家信息网

mybatisplus where QueryWrapper怎么加括号嵌套查询

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇"mybatisplus where QueryWrapper怎么加括号嵌套查询"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读
千家信息网最后更新 2025年02月01日mybatisplus where QueryWrapper怎么加括号嵌套查询

这篇"mybatisplus where QueryWrapper怎么加括号嵌套查询"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"mybatisplus where QueryWrapper怎么加括号嵌套查询"文章吧。

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

以上就是关于"mybatisplus where QueryWrapper怎么加括号嵌套查询"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0