【MyBatis-Plus】详解Wrappers.<T> lambdaQuery()以及常用过滤方法

文章介绍了MyBatis-Plus中的Wrappers.lambdaQuery()方法,用于创建LambdaQueryWrapper对象,通过lambda表达式直观定义查询条件。详细列举了各种过滤方法如eq、like等,以及如何组合使用它们构建复杂查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Wrappers.<T> lambdaQuery()

Wrappers.<T> lambdaQuery() 是 MyBatis-Plus 中用于创建 LambdaQueryWrapper 对象的方法,它用于构建 SQL 查询条件的起始点。LambdaQueryWrapper 是一种类型安全的查询条件构建方式,通过 lambda 表达式可以更加直观地定义查询条件。

用途:

Wrappers.lambdaQuery() 方法用于创建 LambdaQueryWrapper 对象,用于构建查询条件。

类型参数:<T> 用于指定查询的目标实体类型,通常是数据库表对应的实体类。

Lambda 表达式:通过 Wrappers.<T> lambdaQuery() 创建的 LambdaQueryWrapper 对象可以使用 lambda 表达式来定义查询条件,这使得查询条件更加直观和类型安全。

示例:

以下是一个示例,演示如何使用 Wrappers.lambdaQuery() 方法创建查询条件:

LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.eq(User::getAge, 25)
       .like(User::getName, "John")
       .ge(User::getSalary, 50000);
List<User> userList = userMapper.selectList(wrapper);

在这个示例中,我们创建了一个 LambdaQueryWrapper 对象,然后使用 eq、like 和 ge 等方法添加查询条件,最终执行查询并将结果存储在 userList 中。

总之,Wrappers.lambdaQuery() 方法是 MyBatis-Plus 中用于创建 LambdaQueryWrapper 对象的入口,它为开发人员提供了一种方便且类型安全的方式来构建复杂的 SQL 查询条件。通过使用 lambda 表达式,查询条件的编写变得更加直观和易于理解。

常用过滤方法

在 MyBatis-Plus 中,LambdaQueryWrapper 提供了多种过滤方法,用于构建 SQL 查询条件。这些过滤方法是用于比较、筛选和排除记录的条件。

eq(column, value):等于指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要比较的目标值。

ne(column, value):不等于指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要比较的目标值。

ne(boolean condition, R column, Object val)

筛选出指定列的值不等于给定值的记录。

condition:一个布尔值,用于确定是否应用此条件。如果为 true,则条件会生效;如果为 false,则条件被忽略,查询不会考虑该条件。

column:要进行比较的列,通常使用 lambda 表达式来指定列。例如,FileDO::getReviewState 表示要比较 FileDO 对象的 reviewState 列。

val:要比较的值,即要筛选的目标值。只有在 column 表示的列的值不等于 val 时,记录才会符合条件。

gt(column, value):大于指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要比较的目标值。

ge(column, value):大于等于指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要比较的目标值。

lt(column, value):小于指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要比较的目标值。

le(column, value):小于等于指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要比较的目标值。

between(column, value1, value2):在两个值之间。

column:要进行比较的列,通常使用 lambda 表达式指定。

value1 和 value2:要比较的两个目标值。

like(column, value):模糊匹配指定值。

column:要进行比较的列,通常使用 lambda 表达式指定。

value:要模糊匹配的目标值,可以包含通配符 %。

in(column, values):在指定值列表中。

column:要进行比较的列,通常使用 lambda 表达式指定。

values:要匹配的值列表,通常是一个数组、集合或列表。

notIn(column, values):不在指定值列表中。

column:要进行比较的列,通常使用 lambda 表达式指定。

values:要排除的值列表,通常是一个数组、集合或列表。

isNull(column):判断列的值是否为 null。

column:要进行判断的列,通常使用 lambda 表达式指定。

isNotNull(column):判断列的值是否不为 null。

column:要进行判断的列,通常使用 lambda 表达式指定。

这些过滤方法可以根据需要组合使用,以构建复杂的查询条件。使用 lambda 表达式可以实现类型安全的条件构建,让查询条件更加清晰和易于理解。例如:

LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.eq(User::getAge, 25)
       .like(User::getName, "John")
       .ge(User::getSalary, 50000)
       .in(User::getDepartment, Arrays.asList("HR", "Finance"));
List<User> userList = userMapper.selectList(wrapper);

在上面的示例中,我们使用了多个过滤方法来构建查询条件,包括等于、模糊匹配、大于等于和在值列表中等条件,以筛选出符合条件的用户记录。
 

LambdaQueryWrapper<T>()链式写法可以简化代码,使代码更加简洁和易读。通过链式写法,可以在一个方法中完成多个查询条件的设置。例如,可以使用eq()方法设置等于条件,ge()方法设置大于等于条件,le()方法设置小于等于条件等等。每个方法都返回LambdaQueryWrapper对象本身,所以可以连续调用多个方法,从而实现多个查询条件的链式设置。最后,可以使用selectOne()方法执行查询操作,并返回符合条件的单个结果。这种链式写法的好处是可以减少代码量,提高开发效率。例如:User user = userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getUsername, "zhangsan")); System.out.println(user); [1 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [mybatisPlus的new QueryWrapper<>()和new LambdaQueryWrapper<>()的用法](https://blog.csdn.net/qq_44739706/article/details/118635223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Wrappers.<实体>lambdaQuery的使用](https://blog.csdn.net/huang6chen6/article/details/120548281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值