广告
返回顶部
首页 > 资讯 > 数据库 >Mybatis-Plus中的and()和or()的使用与原理介绍
  • 534
分享到

Mybatis-Plus中的and()和or()的使用与原理介绍

mybatisjavamysql 2023-08-31 15:08:52 534人浏览 八月长安
摘要

一. 简单无优先级连接(即无括号的sql语句) 简单来说,两个子条件间默认and与连接,若两个之间显式写出or()则or或连接. 与连接 and() 当需要简单的将两个条件与连接,则最直接的写法为: QueryWrapper queryW

一. 简单无优先级连接(即无括号的sql语句)

简单来说,两个子条件间默认and与连接,若两个之间显式写出or()则or或连接.

与连接 and()

当需要简单的将两个条件与连接,则最直接的写法为:

QueryWrapper queryWrapper = new QueryWrapper().eq("attr_id",key).eq("catelog_id",catelogId);

当然也可以显式地写出and()如下,但没必要:

QueryWrapper queryWrapper = new QueryWrapper().eq("attr_id",key);queryWrapper.and(qr -> qr.eq("catelog_id", catelogId));

或连接 or()

当需要简单的将两个条件或连接,则最直接的写法为:

QueryWrapper queryWrapper = new QueryWrapper().eq("attr_id",key).or().eq("catelog_id",catelogId);

当然也可以如下,但不那么直观:

QueryWrapper queryWrapper = new QueryWrapper().eq("attr_id",key);queryWrapper.or(qr -> qr.eq("catelog_id", catelogId));

二. 复杂有优先级的的连接

上面有2个不推荐的做法,是因为sql语句为A or B , A and B这种简单连接.当涉及到诸如 A and ( B or C) and D 这类的复杂有优先级的的连接,直接拼接会导致成为 A and B or C and D.所以这时候需要需要or(Consumer consumer),and(Consumer consumer)这两个方法.示例如下:

        QueryWrapper queryWrapper = new QueryWrapper().eq("attr_type", "base".equalsIgnoreCase(type) ? 1 : 0);        queryWrapper.and(qr ->                 qr.eq("attr_id", key).                   or().                   like("attr_name", key)        );                queryWrapper.and(qr -> qr.eq("catelog_id", catelogId));        

生成的sql语句如下:

select ...WHERE (attr_type = ? AND ( (attr_id = ? OR attr_name LIKE ?) ) AND ( (catelog_id = ?) ))...;

由此还可见or(Consumer consumer),and(Consumer consumer)这两个方法参数为Consumer时,会在连接处生成2对括号,以此提高优先级.

来源地址:https://blog.csdn.net/qq_43318840/article/details/125704216

您可能感兴趣的文档:

--结束END--

本文标题: Mybatis-Plus中的and()和or()的使用与原理介绍

本文链接: https://www.lsjlt.com/news/386095.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作