0
点赞
收藏
分享

微信扫一扫

lambdaQueryWrapper 在where前面拼接语句 java

Aliven888 2024-01-19 阅读 15

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 提供了 isNullisNotNull 方法,可以用于判断字段是否为空。

queryWrapper.isNull(User::getName); // 判断 name 字段是否为空
queryWrapper.isNotNull(User::getAge); // 判断 age 字段是否不为空

3.2 模糊查询

lambdaQueryWrapper 提供了 likenotLike 方法,可以用于进行模糊查询。

queryWrapper.like(User::getName, "Tom"); // 查询 name 包含 "Tom" 的记录
queryWrapper.notLike(User::getAddress, "北京"); // 查询 address 不包含 "北京" 的记录

3.3 范围查询

lambdaQueryWrapper 提供了 innotInbetween 等方法,可以用于进行范围查询。

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 前面拼接了一条自定义

举报

相关推荐

0 条评论