1、QueryWrapper

QueryWrapper 使用的是数据库的字段名

     /*** (年龄小于40或邮箱不为空)且姓王* SELECT * FROM `user`* WHERE (`age`< 40 OR `email` IS NOT NULL) AND `name` LIKE '王%'*/@Testpublic void selectList_nested() {QueryWrapper<User> query = new QueryWrapper<>();query.nested(q -> q.lt("age", 40).or().isNotNull("email")).likeRight("name", "王");List<User> list = userMapper.selectList(query);list.forEach(System.out::println);}@Testpublic void selectList_entity() {User whereUser = new User();whereUser.setName("刘");whereUser.setAge(32);whereUser.setEmail("");QueryWrapper<User> query = new QueryWrapper<>(whereUser);List<User> list = userMapper.selectList(query);list.forEach(System.out::println);}

2、LambdaQueryWrapper

LambdaQueryWrapper使用的是Lambda语法

    @Testpublic void mySelect() {LambdaQueryWrapper<User> query = new LambdaQueryWrapper<>();query.likeRight(User::getName, "王").and(q -> q.lt(User::getAge, 40).or().isNotNull(User::getEmail));List<User> list = userMapper.selectAll(query);list.forEach(System.out::println);}

3、LambdaQueryChainWrapper

链式查询

    /*** 链式lambda条件构造器:更优雅的书写方式*/@Testpublic void lambdaQueryChainWrapper() {List<User> list = new LambdaQueryChainWrapper<User>(userMapper).likeRight(User::getName, "王").and(q -> q.lt(User::getAge, 40).or().isNotNull(User::getEmail)).list();list.forEach(System.out::println);}

4、三者区别

1、QueryWrapper 直接使用写死“列名”方式,容易因拼写错误导致异常,当字段名称发生改变,导致额外更多检查和修改工作。如有错误,运行时报错。或者需要封装查询类的对象,增加代码量。

2、LambdaQueryWrapper 使用lambda表达式,如有错误,编译期就会报错;灵活。【推荐】

3、LambdaQueryChainWrapper,写法偏向于炫技,可读性没有上面的代码强。

Mybatis plus 之 QueryWrapper、LambdaQueryWrapper、LambdaQueryChainWrapper相关推荐

  1. mybatis框架中的queryWrapper的or查询,联想到MySQL中and 和or的关系

    统计的原生SQL应该是这样的: SELECTCOUNT( 1 ) FROMtable_name WHERE( id = '679135XXXXXXX1212' AND ( STATUS = 1 OR ...

  2. mybatis plus条件拼接

    mybatis plus条件拼接 条件构造器 案例table AbstractWrapper allEq:全部eq(或个别isNull) eq:等于 = ne:不等于 <> gt:大于 & ...

  3. mybatis plus按时间段查询_你应该知道的这些Mybatis-Plus使用技巧(小结)

    最近在用 Mybatis-Plus,嗯,真香!!!今天就来说说 Mybatis-Plus 的那些使用技巧 1.条件查询(QueryWrapper) 如果说,我们需要查询的 SQL 语句如下: SELE ...

  4. free mybatis 不生效_这些Mybatis-Plus的使用小技巧,你应该知道的!

    最近在用 Mybatis-Plus,嗯,真香!!!今天就来说说 Mybatis-Plus 的那些使用技巧 1.条件查询(QueryWrapper) 如果说,我们需要查询的 SQL 语句如下: SELE ...

  5. Spring boot 实战指南(二):Mybatis、动态绑定、多数据源、分页插件、Mybatis-Plus

    文章目录 一.整合Mybatis 1.搭建数据库环境 2.基于注解整合Mybatis (1)创建项目 (2)具体代码实现 (3)测试 3.基于xml整合Mybatis 4.Mybatis的动态SQL ...

  6. MyBatis Plus使用文档记录说明

    文章目录 MyBatis Plus 基础篇 一.简介 拥有强大的特性 二.框架结构 三.基本开发环境 1. 准备数据 2. Hello World 第一步:创建一个 Spring Boot 项目 第二 ...

  7. MyBatis Plus基础理论以及实战

    MyBatis Plus 基础篇 项目地址:https://gitee.com/ldxdong/mybatis-plus 一.简介 MyBatis 是一个半自动的 ORM 框架. MyBatis-Pl ...

  8. MyBatis-Plus学习总结

    MyBatis-Plus学习总结 什么是MyBatis-Plus? MyBatis-Plus的优点有哪些? 快速开始(在SpringBoot中使用MP) MyBatis-Plus常用注解 MyBati ...

  9. 学习MyBatis-Plus3这一篇就够了

    目录 第一章 MyBatis-Plus3概述 1.1.简介 1.2.特性 1.3.框架结构 1.4.项目地址 1.5.版本介绍 1.6.快速安装 1.7.开发环境 第二章 MyBatis-Plus3增 ...

最新文章

  1. c语言宏定义_掌握C语言,中文编程不是梦
  2. Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示
  3. 深度解密之HDU3826(Square free number)
  4. 轻松几步搞定SSH连接Git配置
  5. js 将video的第一帧 转为图片
  6. Beyond Saliency map
  7. apk反编译、smali修改、回编译笔记
  8. hive 操作(四)
  9. 基于大众点评字体库的字体反爬案例
  10. 架设传奇时打开DBC数据库出错或读取DBC失败解决方法
  11. 新点软件怎么导入清单_【新点软件怎么导出到excel】新点造价软件怎么导入清单...
  12. 28种美女最漂亮的拍照姿势
  13. 程序物语(五):经营自己的程序生涯
  14. Vue 2.x折腾记 - (17) 基于Ant Design Vue 封装一个配置式的表单组件
  15. Vue 和 React 的diff有什么不同
  16. git设置用户名和邮箱地址
  17. QQShow?你也可以做!
  18. R和R-Studio安装
  19. Voice meter 下载与安装
  20. 开源WebGIS开发2——开发环境(IntelliJ IDEA)

热门文章

  1. 腾讯会议 for Mac(云视频会议软件)
  2. springboot项目打包部署到阿里云
  3. mapbox-gl-draw改造,支持绘制时实时显示面积
  4. nginx启动报 server name * has suspicious symbols
  5. C#采集麦克风话筒声音
  6. 如何提高职场说服力?这本说服力书籍你值得拥有!
  7. JavaScript学习:函数
  8. 每日一练20210816
  9. UE5 关闭编辑器后C++类从内容浏览器中消失
  10. NKD 编译通过,但是eclipse提示报错 linux