MyBatisPlus 中 LambdaQueryWrapper使用
一、前言
MyBatis-Plus是一个强大的MyBatis扩展插件,它为MyBatis提供了许多实用的功能,其中之一就是LambdaQueryWrapper。LambdaQueryWrapper是一个条件构造器,用于构建SQL查询条件。通过使用LambdaQueryWrapper,我们可以以更简洁、更直观的方式编写查询条件,提高开发效率。
LambdaQueryWrapper是MyBatis-Plus提供的一个条件构造器,它基于Java 8的Lambda表达式特性,允许我们通过Lambda表达式来构建查询条件。LambdaQueryWrapper可以替代传统的QueryWrapper,使得代码更加简洁、易读。
二、LambdaQueryWrapper的常用方法
方法 | 作用 |
---|---|
eq(column, value): | 等于 |
ne(column, value): | 不等于 |
gt(column, value) | 大于 |
ge(column, value) | 大于等于 |
lt(column, value): | 小于 |
le(column, value) | 小于等于 |
like(column, value) | 模糊查询 |
notLike(column, value) | 不模糊查询 |
in(column, valueList): | 在指定集合中 |
notIn(column, valueList) | 不在指定集合中 |
isNull(column): | 为空 |
isNotNull(column): | 不为空 |
orderByAsc(column) | 升序排序 |
orderByDesc(column): | 降序排序 |
三、使用LambdaQueryWrapper进行条件查询
下面通过一个简单的示例来演示如何使用LambdaQueryWrapper进行条件查询。
查询OperationTime 在开始时间和结束时间之内,StateCode等于已执行的cd,DeleteFlag等于0的数据集合
// OperationTime 在开始时间和结束时间之内,StateCode等于已执行的cd,DeleteFlag等于0
List<OrderStateDO> orderStateList = ChainWrappers.lambdaQueryChain(this.orderStateMapper).eq(OrderStateDO::getOrderId, request.getOrderId())
.ge(Objects.nonNull(request.getStartDate()), OrderStateDO::getOperationTime, request.getStartDate())
.le(Objects.nonNull(request.getEndDate()), OrderStateDO::getOperationTime, request.getEndDate())
.eq(OrderStateDO::getStateCode, MedordStaEnum.EXECUTE.getCd())
.eq(OrderStateDO::getDeleteFlag, IfEnum.NO.getCode()).list();
LambdaQueryWrapper支持链式调用,因此我们可以将多个条件方法连在一起,以构建更复杂的查询条件。
四、总结
LambdaQueryWrapper是MyBatis-Plus提供的一个强大的条件构造器,它允许我们通过Lambda表达式来构建查询条件,使得代码更加简洁、易读。通过掌握LambdaQueryWrapper的常用方法,我们可以轻松实现各种查询需求,提高开发效率。