MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用
转载自
MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用
https://blog.csdn.net/lt326030434/article/details/106571670
LambdaQueryWrapper条件构造器方法对应Sql
| setSqlSelect | SELECT 查询字段 | 举例 |
|---|---|---|
| where | WHERE 语句,拼接 + WHERE 条件 | |
| and | AND 语句,拼接 + AND 字段=值 | |
| andNew | AND 语句,拼接 + AND (字段=值) | |
| or | OR 语句,拼接 + OR 字段=值 | .eq(" name “,” 木 子 “). or ( ). eq (” id ", 1 ) => name=“木子” or id=1 注意事项:主动调用or表示下一个方法不是and连接,不调用默认为使用and连接 |
| orNew | OR 语句,拼接 + OR (字段=值) | |
| eq | 等于= | .eq(“name”,“木子”) => name=“木子” |
| allEq | 基于 map 内容等于= | |
| ne | 不等于<> | |
| gt | 大于> | |
| ge | 大于等于>= | |
| lt | 小于< | |
| le | 小于等于<= | |
| like | 模糊查询 LIKE | .like(“name”,“木子”) => name like ‘%木子%’ |
| notLike | NOT LIKE模糊查询 | |
| in | IN 查询 | .in(“age”,{1,2,3}) => age in (1,2,3) |
| notIn | NOT IN 查询 | |
| isNull | NULL 值查询 | |
| isNotNull | IS NOT NULL | |
| groupBy | 分组 GROUP BY | |
| having | HAVING 关键词 | |
| orderBy | 排序 ORDER BY | |
| orderAsc | Asc 排序 ORDER BY | |
| orderDesc | DESC 排序 ORDER BY | |
| exists | EXISTS 条件语句 | |
| notExists | NOT EXISTS 条件语句 | |
| between | BETWEEN 条件语句 | .between (“age”,1,2) => age between 1 and 2 |
| notBetween | NOT BETWEEN 条件语句 | |
| addFilter | 自由拼接 SQL | |
| last | 拼接在最后,例如:last(“LIMIT 1”) |
假如我们有一张banner_item表,现需要通过banner_id查出所有数据(查询List)

@Data
public class BannerItem {
private Long id;
private String name;
private String img;
private String keyword;
private Integer type;
private Long bannerId;
}
- QueryWrapper
最基础的使用方式是这样
// 查询条件构造器
QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.eq("banner_id", id);
// 查询操作
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
然后我们可以引入lambda,避免我们在代码中写类似的于banner_id的硬编码
QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
- LambdaQueryWrapper
为了简化lambda的使用,我们可以改写成LambdaQueryWrapper构造器,语法如下:
LambdaQueryWrapper<BannerItem> wrapper = new QueryWrapper<BannerItem>().lambda();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
我们可以再次将QueryWrapper<BannerItem>.lambda()简化,变成这个样子
LambdaQueryWrapper<BannerItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
- 链式查询
MyBatis-Plus还提供了一种链式查询的方式,和上面的代码效果一样。
但是这种写法偏向于炫技,可读性没有上面的代码强,大家可以根据需要自行选择方式。
List<BannerItem> bannerItems = new LambdaQueryChainWrapper<>(bannerItemMapper)
.eq(BannerItem::getBannerId, id)
.list();
如果只想查询一条记录,例如通过id查询某条记录的详情,使用.one()即可,例如
BannerItem bannerItem = new LambdaQueryChainWrapper<>(bannerItemMapper)
.eq(BannerItem::getId, id)
.one();
一个使用较多的项目模板 https://gitee.com/xqnode/x-admin
MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用
MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用的更多相关文章
- Mybatis Plus中的lambdaQueryWrapper条件构造图介绍
- 解决Mybatis-plus高版本不向后兼容的问题
mybatis-plus插件后面的版本没有兼容低版本.即:不存在低版本中EntityWrapper这个类了.而该类采用数据库表真实字段名作查询条件,这样硬编码形式确实不友好,比如如果后面数据库表中字段 ...
- Redis实战-详细配置-优雅的使用Redis注解/RedisTemplate
1. 简介 当我们对redis的基本知识有一定的了解后,我们再通过实战的角度学习一下在SpringBoot环境下,如何优雅的使用redis. 我们通过使用SpringBoot内置的Redis注解(文章 ...
- 前后端分离,简单JWT登录详解
前后端分离,简单JWT登录详解 目录 前后端分离,简单JWT登录详解 JWT登录流程 1. 用户认证处理 2. 前端登录 3. 前端请求处理 4. 后端请求处理 5. 前端页面跳转处理 6. 退出登录 ...
- 文件上传接入阿里云OSS
目的:将文件交给阿里云进行管理,可避免文件对本地服务器资源的占用,阿里云OSS还可根据读写偏好选择合适的文件存储类型服务器,文件异地备份等 一.阿里云OSS基础了解(前提) 1.存储空间(Bucket ...
- SpringCache的基本使用
SpringCache SpringCache是一个框架,实现了基于注解的缓存功能.SpringCache提供了一层抽象,底层可以切换不同的cache实现.具体是通过CacheManager接口来统一 ...
- MyBatis:条件构造器QueryWrapper方法详解
QueryWrapper 说明: 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 n ...
- java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】
一.概述 三款框架的功能对比 Mybatis-generator 通用Mapper Mybatis-Plus 代码生成器 支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵 ...
- MyBatis 进阶,MyBatis-Plus!(基于 Springboot 演示)
这一篇从一个入门的基本体验介绍,再到对于 CRUD 的一个详细介绍,在介绍过程中将涉及到的一些问题,例如逐渐策略,自动填充,乐观锁等内容说了一下,只选了一些重要的内容,还有一些没提及到,具体可以参考官 ...
随机推荐
- ptm经验总结
- CSS 奇思妙想 | 巧妙的实现带圆角的三角形
之前在这篇文章中 -- <老生常谈之 CSS 实现三角形>,介绍了 6 种使用 CSS 实现三角形的方式. 但是其中漏掉了一个非常重要的场景,如何使用纯 CSS 实现带圆角的三角形呢?,像 ...
- 排序---python版
冒泡排序: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数: 针对所有的元素重复以上的步骤,除了最 ...
- Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议
目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...
- Arduino IDE 2.0 beta安装
1.在官网(Software | Arduino)下载安装包,此次提供操作系统有:Windows.Linux和macOC系统 2.点击安装包进行安装 3.点击我同意 4.点击下一步 5.选择安装路径( ...
- Python使用笔记27--mysql操作封装类
1.面向过程 1 import pymysql 2 3 #面向过程 4 mysql_info = {'host':'127.0.0.1', 5 'port':3306, 6 'user':'root' ...
- PYTHON 得到ADB的输出结果
#利用ADB DEVICES结果判断指定手机是否正常连接,如果为offline,则adb disconnect sjh:adb connect sjh#如果没有,则执行adb connect sjhd ...
- facade层,service 层,domain层,dao 层设计
转自http://fei-6666.iteye.com/blog/446247,记录下来 一,Service->DAO,只能在Service中注入DAO. 二,DAO只能操作但表数据,跨表操作放 ...
- LUSE: 无监督数据预训练短文本编码模型
LUSE: 无监督数据预训练短文本编码模型 1 前言 本博文本应写之前立的Flag:基于加密技术编译一个自己的Python解释器,经过半个多月尝试已经成功,但考虑到安全性问题就不公开了,有兴趣的朋友私 ...
- [编译] 8、在Linux下搭建 stm8 单片机的开发烧写环境(makefile版)
目录 一.SDCC(Small Device C Compiler)编译环境搭建 1.1.下载 1.2.编译 1.3.测试 二.Hex2Bin+命令行烧写工具配置使用 2.1.下载工具安装配置 2.2 ...