lambdaQueryWrapper 在 where 前面拼接语句 Java
在进行数据库查询时,我们经常会使用到查询条件的拼接。lambdaQueryWrapper 是 MyBatis-Plus 框架提供的一个强大的查询条件构造器,它提供了一种方便的方式来拼接 SQL 语句。本文将介绍如何在 where 前面拼接语句使用 lambdaQueryWrapper,并提供一些代码示例来帮助理解。
1. lambdaQueryWrapper 简介
lambdaQueryWrapper 是 MyBatis-Plus 框架提供的一个查询条件构造器,它主要用于构建查询条件。使用 lambdaQueryWrapper 可以方便地进行字段的判空、模糊查询、范围查询等操作,极大地简化了 SQL 语句的编写。
2. 在 where 前面拼接语句
在使用 lambdaQueryWrapper 进行查询时,我们可以在 where 条件之前拼接自定义的 SQL 语句。这样可以在查询条件之前添加额外的条件,以满足特定的查询需求。
下面是一个示例代码,演示了如何在 where 前面拼接语句:
public List<User> getUserList(String name, Integer age) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.sql("SELECT * FROM user");
if (StringUtils.isNotBlank(name)) {
queryWrapper.like(User::getName, name);
}
if (age != null) {
queryWrapper.eq(User::getAge, age);
}
List<User> userList = userDao.selectList(queryWrapper);
return userList;
}
在上面的代码中,我们首先创建了一个 LambdaQueryWrapper 对象 queryWrapper,并使用 queryWrapper.sql()
方法在 where 前面拼接了一条自定义的 SQL 语句。然后根据传入的查询条件来构建查询条件,最后使用 queryWrapper 进行数据库查询。
通过这种方式,我们可以在 where 条件之前添加自定义的 SQL 语句,使查询更加灵活。
3. lambdaQueryWrapper 常用方法
除了在 where 前面拼接语句外,lambdaQueryWrapper 还提供了一些常用的方法,可以方便地构建查询条件。
3.1 判空条件
lambdaQueryWrapper 提供了 isNull
和 isNotNull
方法,可以用于判断字段是否为空。
queryWrapper.isNull(User::getName); // 判断 name 字段是否为空
queryWrapper.isNotNull(User::getAge); // 判断 age 字段是否不为空
3.2 模糊查询
lambdaQueryWrapper 提供了 like
和 notLike
方法,可以用于进行模糊查询。
queryWrapper.like(User::getName, "Tom"); // 查询 name 包含 "Tom" 的记录
queryWrapper.notLike(User::getAddress, "北京"); // 查询 address 不包含 "北京" 的记录
3.3 范围查询
lambdaQueryWrapper 提供了 in
、notIn
、between
等方法,可以用于进行范围查询。
queryWrapper.in(User::getAge, Arrays.asList(18, 20, 22)); // 查询 age 在 [18, 20, 22] 中的记录
queryWrapper.notIn(User::getGender, Arrays.asList("男", "女")); // 查询 gender 不在 ["男", "女"] 中的记录
queryWrapper.between(User::getSalary, 1000, 2000); // 查询 salary 在 [1000, 2000] 范围内的记录
4. 完整代码示例
下面是一个完整的代码示例,演示了如何使用 lambdaQueryWrapper 进行查询:
public class UserService {
private UserDao userDao;
public List<User> getUserList(String name, Integer age) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.sql("SELECT * FROM user");
if (StringUtils.isNotBlank(name)) {
queryWrapper.like(User::getName, name);
}
if (age != null) {
queryWrapper.eq(User::getAge, age);
}
List<User> userList = userDao.selectList(queryWrapper);
return userList;
}
}
在上面的代码中,我们首先创建了一个 LambdaQueryWrapper 对象 queryWrapper,并使用 queryWrapper.sql()
方法在 where 前面拼接了一条自定义