mybatisplus的LambdaQueryWrapper用法
时间: 2025-03-30 07:05:27 浏览: 86
### MyBatisPlus 中 LambdaQueryWrapper 的使用方法
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个强大工具,用于简化 SQL 查询条件的构建过程。相比传统的 QueryWrapper,LambdaQueryWrapper 利用了 Java 的 Lambda 表达式特性,能够实现类型安全的字段引用,从而减少拼写错误的可能性。
#### 基础概念
LambdaQueryWrapper 是一种条件构造器,允许开发者以链式调用的形式定义查询逻辑。它支持多种常用的操作符,例如 `eq()`(等于)、`like()`(模糊匹配)、`in()`(范围匹配)以及排序函数 `orderByAsc()` 和 `orderByDesc()` 等[^2]。
#### 示例代码
以下是一个完整的示例,展示如何在 Spring Boot 项目中集成并使用 LambdaQueryWrapper:
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.demo.entity.User; // 自定义实体类
import com.example.demo.mapper.UserMapper; // 自定义 Mapper 接口
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersByCondition(String name, Integer age) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
// 构建查询条件
queryWrapper.like(User::getName, name) // 名字模糊匹配
.ge(age != null, User::getAge, age); // 如果年龄不为空,则大于等于指定值
// 执行查询
return userMapper.selectList(queryWrapper);
}
}
```
上述代码展示了如何通过 LambdaQueryWrapper 定义复杂的查询条件,并将其应用于数据库操作。注意,在设置条件时可以灵活地结合布尔表达式控制某些条件是否生效[^3]。
#### 关于 int 默认值的问题
当处理基本数据类型的参数(如 `int` 或 `boolean`),需要注意其默认值可能引发意外行为。例如,如果未显式赋值给某个整型变量,默认会初始化为 `0`。这可能导致误判,因为即使该字段实际并未传递任何有效数值,也会被当作合法输入参与比较运算[^4]。
解决此问题的一种方式是改用包装类(如 `Integer` 而非原始类型 `int`)。这样可以在必要时利用 `null` 来区分是否有意设置了特定值。
#### 功能特点
除了基础的条件过滤外,LambdaQueryWrapper 还具备如下优势:
1. **类型安全性**:由于采用 Lambda 表达式访问对象属性,编译阶段即可发现潜在错误。
2. **语法简洁性**:无需硬编码字符串形式的列名,提升可读性和维护便利程度。
3. **灵活性强**:不仅限于简单等号判断,还覆盖诸如区间筛选、多值匹配等多种场景需求[^5]。
---
阅读全文
相关推荐

















