• 【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 查询条件:

    1. // 引入相关依赖
    2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    3. import com.baomidou.mybatisplus.core.metadata.TableInfo;
    4. import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
    5. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    7. public class DynamicQueryExample {
    8. public static void main(String[] args) {
    9. // 创建一个 QueryWrapper 对象
    10. QueryWrapper queryWrapper = new QueryWrapper<>();
    11. // 设置查询条件
    12. queryWrapper.apply("name", "like", "%张%");
    13. queryWrapper.apply("age", "gt", 18);
    14. // 执行查询
    15. Page page = usersService.page(new Page<>(1, 10), queryWrapper);
    16. // 输出查询结果
    17. System.out.println(page.getRecords());
    18. }
    19. }
    20. // Users 是你的实体类,需要继承 com.baomidou.mybatisplus.core.incrementer.Model
    21. // com.baomidou.mybatisplus.core.mapper.BaseMapper 是 MyBatis-Plus 提供的基础 Mapper 接口
    22. // usersService 是你的 Users 服务类,需要实现 IUserService 接口
    23. // 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博客

  • 相关阅读:
    短视频视频制作矩阵剪辑系统---源码,源代码独立搭建
    C++中tuple数据结构使用
    使用Laravel框架创建项目
    Apache Hudi 0.13.0版本重磅发布!
    【前端】前端权限管理的实现方式:基于Vue项目的详细指南
    【数据结构】排序--插入排序(希尔排序)
    Prometheus学习笔记 01
    nginx动态新增模块
    2010-2023年“国家级大数据综合试验区”试点城市DID匹配数据
    使用git将本地文件上传到仓库+git常用指令
  • 原文地址:https://blog.csdn.net/m0_62006803/article/details/136301418