QueryWrapper和LambdaQueryWrapper和Wrappers

本文详细介绍了MyBatisPlus中的条件构造器Wrapper及其子类的使用方法,包括QueryWrapper、LambdaQueryWrapper等,提供了丰富的示例代码帮助理解如何进行数据库操作。

条件构造器

前言:当我们使用MybatisPlus进行数据库操作,条件构造器无可厚非会使用到!

介绍

在这里插入图片描述

Wrapper:条件构造抽象类,是最顶端父类;
AbstractWrapper:用于查询条件封装,生成sql的where条件;
AbstractLambdaWrapper:Lambda语法使用Wrapper统一处理解析lambda获取column。
LambdaQueryWrapper:用于lambda语法使用的查询Wrapper;
LambdaUpdateWrapper:Lambda更新封装Wrapper;
QueryWrapper:Entity对象封装操作类,不是用lambda;
UpdateWrapper:Update条件封装,用于Entity对象更新操作。

一、QueryWrapper

1.1 写法
QueryWrapper<Users> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username",name);
List<User> user = userMapper.selectList(lambdaQueryWrapper)
1.2 方法解释
queryWrapper.lt();							// 小于
queryWrapper.le();							// 小于等于
queryWrapper.gt();							// 大于
queryWrapper.ge();							// 大于等于
queryWrapper.eq();							// 等于	
queryWrapper.ne();							// 不等于
queryWrapper.betweeen("age”,10,20);			// age在值10到20之间
queryWrapper.notBetweeen("age”,10,20);		// age不在值10到20之间
queryWrapper.like("属性","值");			// 模糊查询匹配值
queryWrapper.notLike("属性","值");			// 模糊查询不匹配值
queryWrapper.likeLeft("属性","值");		// 模糊查询匹配最后一位值
queryWrapper.likeRight("属性","值");		// 模糊查询匹配第一位值‘值%’
queryWrapper.isNull();						// 值为空或null
queryWrapper.isNotNull();					// 值不为空或null
queryWrapper.in("属性",条件,条件);			// 符合多个条件的值
queryWrapper.notIn("属性",条件,条件);			// 不符合多个条件的值
queryWrapper.or();							// 或者
queryWrapper.and();							// 和
queryWrapper.orderByAsc(“属性”);				// 根据属性升序排序
queryWrapper.orderByDesc(“属性”);				// 根据属性降序排序
queryWrapper.inSql(“sql语句”);				// 符合sql语句的值
queryWrapper.notSql(“sql语句”);				// 不符合SQL语句的值
queryWrapper.esists(“SQL语句”);				// 查询符合SQL语句的值
queryWrapper.notEsists(“SQL语句”);			// 查询不符合SQL语句的值
queryWrapper.select("字段1","字段2","字段3");	// 设置查询字段

二、LambdaQueryWrapper

2.1 写法
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getUsername,name);
List<User> user = userMapper.selectList(lambdaQueryWrapper)
2.2 方法解释
 wrapper.eq("实体类::查询字段", "条件值");
 wrapper.between("实体类::查询字段", "区间一", "区间二");
 wrapper.like("实体类::查询字段", "模糊查询的字符"); 
 wrapper.groupBy("实体类::查询字段"); 
 wrapper.in("实体类::查询字段", "包括的值,分割"); 
 wrapper.orderByAsc("实体类::查询字段"); 				//升序
 wrapper.orderByDesc("实体类::查询字段");				//降序
 wrapper.ge("实体类::查询字段", "要比较的值"); 			//大于等于
 wrapper.le("实体类::查询字段", "要比较的值"); 			//小于等于

三、Wrappers

3.1 写法
Wrappers.<User>lambdaQuery().eq(User::getUsername,name);
3.2 方法解释
看上面的
### 将 LambdaQueryWrapper 转换为 QueryWrapper 在 MyBatis-Plus 中,`LambdaQueryWrapper` `QueryWrapper` 都用于构建查询条件,但 `LambdaQueryWrapper` 提供了更安全的方式通过方法引用设置字段名。如果需要将 `LambdaQueryWrapper` 的逻辑转换到 `QueryWrapper`,可以按照以下方式进行: 对于给定的 `LambdaQueryWrapper<User>` 使用方式: ```java LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(User::getName, "张三"); List<User> users = userMapper.selectList(lambdaQueryWrapper); ``` 对应的 `QueryWrapper<User>` 实现应如下所示[^2]: ```java QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "张三"); List<User> users = userMapper.selectList(queryWrapper); ``` 注意,在使用 `QueryWrapper` 时,字段名称需手动指定字符串形式,这可能引入拼写错误的风险。 当处理复杂对象如 `BannerItem` 类型时,假设存在一个基于 `LambdaQueryWrapper<BannerItem>` 的操作: ```java LambdaQueryWrapper<BannerItem> lambdaWrapper = Wrappers.<BannerItem>lambdaQuery(); lambdaWrapper.eq(BannerItem::getBannerId, id); List<BannerItem> bannerItems = bannerItemMapper.selectList(lambdaWrapper); ``` 其等价于下面这段采用 `QueryWrapper<BannerItem>` 形式的代码[^1]: ```java QueryWrapper<BannerItem> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("banner_id", id); // 字段名为数据库中的列名而非实体属性名 List<BannerItem> bannerItems = bannerItemMapper.selectList(queryWrapper); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨同学_丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值