【MyBatis-Plus】之queryWrapper.apply用法

目录

一、queryWrapper.apply的含义及其用法

二、其他方法

三、注意事项


官网地址:MyBatis-Plus https://baomidou.com/

一、queryWrapper.apply的含义及其用法

QueryWrapper.apply() 是 MyBatis-Plus 提供的方法,用于构建动态 SQL 查询条件。它允许你通过传递一个对象来动态生成 SQL 查询条件

QueryWrapper 是一个包装类,用于构建查询条件。它提供了一系列方法来添加不同类型的查询条件,如等于、大于、小于、模糊匹配等。

apply() 方法接受一个对象作为参数,该对象的属性名和值将被用于构建 SQL 查询条件。它会根据对象的属性名和值,自动生成相应的 SQL 条件语句。

例如:queryWrapper.apply("DATE(visit_date) = '" + today.toString() + "'")

这段代码中的 queryWrapper.apply("DATE(visit_date) = '" + today.toString() + "'");它的作用是向查询条件中添加一段自定义的 SQL 片段。在这里的具体含义是:筛选出 visit_date 字段等于今天日期的数据。

更具体地说,这段代码会生成类似于 DATE(visit_date) = '2024-02-26' 的 SQL 语句,其中 today.toString() 返回的是当前日期(例如 "2024-02-26"),所以这段 SQL 就是用来筛选出 visit_date 等于今天日期的数据记录。

下面是一个简单的示例,演示如何使用 QueryWrapper.apply() 方法构建动态 SQL 查询条件:

// 引入相关依赖
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public class DynamicQueryExample {

    public static void main(String[] args) {
        // 创建一个 QueryWrapper 对象
        QueryWrapper<Users> queryWrapper = new QueryWrapper<>();

        // 设置查询条件
        queryWrapper.apply("name", "like", "%张%");
        queryWrapper.apply("age", "gt", 18);

        // 执行查询
        Page<Users> page = usersService.page(new Page<>(1, 10), queryWrapper);

        // 输出查询结果
        System.out.println(page.getRecords());
    }
}

// Users 是你的实体类,需要继承 com.baomidou.mybatisplus.core.incrementer.Model
// com.baomidou.mybatisplus.core.mapper.BaseMapper 是 MyBatis-Plus 提供的基础 Mapper 接口
// usersService 是你的 Users 服务类,需要实现 IUserService 接口
// IUserService 是你定义的 Users 服务接口

二、其他方法

除了 QueryWrapper.apply() 方法,MyBatis-Plus 还提供了其他方法来构建动态 SQL 查询条件。以下是一些常用的方法:

  1. eq():用于添加等于条件,接受一个字段名和值作为参数。
  2. ne():用于添加不等于条件,接受一个字段名和值作为参数。
  3. gt():用于添加大于条件,接受一个字段名和值作为参数。
  4. lt():用于添加小于条件,接受一个字段名和值作为参数。
  5. ge():用于添加大于等于条件,接受一个字段名和值作为参数。
  6. le():用于添加小于等于条件,接受一个字段名和值作为参数。
  7. between():用于添加范围条件,接受一个字段名、最小值和最大值作为参数。
  8. in():用于添加多个值的条件,接受一个字段名和一个值列表作为参数。
  9. like():用于添加模糊匹配条件,接受一个字段名和一个模式作为参数。
  10. notIn():用于添加不在多个值列表中的条件,接受一个字段名和一个值列表作为参数。

这些方法可以组合使用,以构建复杂的动态 SQL 查询条件。例如,你可以使用多个 eq() 方法来添加多个等于条件,或者使用 and() 方法来组合多个条件。

三、注意事项

在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,需要注意以下几点:

  1. 字段名:传递给 QueryWrapper 类的方法的字段名必须是数据库表中的实际字段名。如果字段名不正确,将无法正确构建查询条件。

  2. 参数类型:传递给 QueryWrapper 类的方法的参数类型必须与数据库表中的字段类型相匹配。如果参数类型不正确,将无法正确构建查询条件。

  3. 条件组合:可以使用 and() 方法或 or() 方法来组合多个条件。如果需要添加多个条件,可以使用 QueryWrapper 类的 all() 方法来添加多个条件。

  4. 参数传递:如果传递的参数是复杂对象,需要确保该对象的属性名与数据库表中的字段名相匹配。如果参数是列表或集合,需要确保传递的参数类型与数据库表中的字段类型相匹配。

  5. 数据库方言:MyBatis-Plus 支持多种数据库方言,不同的数据库方言可能对 SQL 语法有不同的要求。因此,在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,需要根据所使用的数据库方言进行调整。

总之,在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,需要注意字段名、参数类型、条件组合、参数传递和数据库方言等问题,以确保正确构建查询条件。

如何确保传递给`QueryWrapper`类的方法的参数是有效的?

在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,为了确保传递给 QueryWrapper 类的方法的参数是有效的,可以采取以下几个步骤:

  1. 验证参数类型:传递给 QueryWrapper 类的方法的参数类型必须与数据库表中的字段类型相匹配。如果参数类型不正确,将无法正确构建查询条件。因此,在传递参数之前,需要确保参数类型是正确的。

  2. 验证参数值:传递给 QueryWrapper 类的方法的参数值必须是有效的。如果参数值无效,将无法正确构建查询条件。因此,在传递参数之前,需要确保参数值是有效的。

  3. 处理空值:如果传递给 QueryWrapper 类的方法的参数值为空,需要根据具体情况进行处理。例如,如果要添加等于条件,传递的参数值为空,可以使用 isNotNull() 方法来添加不为空的条件。

  4. 处理复杂对象:如果传递的参数是复杂对象,需要确保该对象的属性名与数据库表中的字段名相匹配。如果参数是列表或集合,需要确保传递的参数类型与数据库表中的字段类型相匹配。

  5. 处理日期类型:如果传递的参数是日期类型,需要确保参数值的格式与数据库表中的字段类型相匹配。不同的数据库可能对日期类型的格式有不同的要求。

  6. 处理字符串类型:如果传递的参数是字符串类型,需要确保参数值的格式与数据库表中的字段类型相匹配。不同的数据库可能对字符串类型的格式有不同的要求。

参考

LambdaQueryWrapper的条件构造器方法对应Sql_后端_LouisMin23-华为云开发者联盟

Mybatis plus条件构造器QueryWrapper的简单用法_querywrapper.eq-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值