【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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gateway网关实战

目录 什么是API网关&#xff1f; 网关为什么出现&#xff1f; 什么是Spring Cloud Gateway&#xff1f; 核心概念 Spring Cloud Gateway实战 路由断言工厂&#xff08;Route Predicate Factories&#xff09;配置 路径匹配 Header匹配 过滤器工厂&#xff08; Gateway…

【kubernetes】二进制部署k8s集群之cni网络插件flannel和calico工作原理

k8s集群的三种接口 k8s集群有三大接口&#xff1a; CRI&#xff1a;容器进行时接口&#xff0c;连接容器引擎--docker、containerd、cri-o、podman CNI&#xff1a;容器网络接口&#xff0c;用于连接网络插件如&#xff1a;flannel、calico、cilium CSI&#xff1a;容器存储…

NVIDIA\CUDA\cudnn安装以及visual studio2022编译安装ceres2.2.0库

一、NVIDIA驱动安装 网址:官方驱动 | NVIDIA 因为本文之后需要visual studio2022进行编译&#xff0c;所以在安装NVIDIA\CUDA\cudnn之前你先得安装visual studio2022 点击NVIDIA控制面板&#xff0c;NVIDIA Control Panel 查看产品家族 根据产品家族选择驱动&#xff0c;点…

[算法沉淀记录] 排序算法 —— 选择排序

排序算法 —— 选择排序 基本概念 选择排序是一种简单的排序算法&#xff0c;它的工作原理是每次从待排序的列表中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其与列表中的第一个位置交换&#xff0c;然后继续对剩余的元素进行排序&#xff0c;直到整个列表…

基于Java SSM框架实现家庭食谱管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现家庭食谱管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个家庭食谱管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

【Git】window下大小写不敏感问题处理

在Windows环境下&#xff0c;Git因为文件名的大小写敏感性而导致了一些问题。 首先&#xff0c;Windows文件系统是不区分大小写的&#xff0c;这意味着在Windows中创建的两个文件名只有大小写不同&#xff0c;但字母顺序和字符完全相同的文件会被视为相同的文件。然而&#xf…

省内顺丰寄一台电脑多少钱,顺丰不会乱丢包裹

省内用顺丰快递寄电脑要多少钱&#xff1f; 使用顺丰速运。 顺丰快递不会乱扔包裹。 根据地区不同&#xff0c;邮费预计在120至150元左右。 有些地方顺丰不允许寄电脑&#xff0c;因为电脑特别容易损坏。 一般来说&#xff0c;您需要自己做。 有的顺丰还帮忙在电脑主机的外箱上…

喜报|迪捷软件入选工信部“2023年信息技术应用创新解决方案”

为进一步推进信创生态建设&#xff0c;激发产业自主创新活力&#xff0c;高效促进供需协同发展&#xff0c;加强区域联动和资源整合&#xff0c;国家工业和信息化部网络安全产业发展中心&#xff08;工业和信息化部信息中心&#xff09;联合相关单位&#xff0c;遴选了一批可复…

2024年江苏事业单位招聘报名指南

江苏事业单位目前已出的公告中&#xff0c;扬州和常州的报名时间相对较早&#xff0c;2月27日就开始报名了&#xff1b;其他大多在2月28日或3月1日起开始报名。 报名请移步<江苏人事考试网> 【报名时间】 2月28日9:00-3月4日16:00#图文万粉激励计划# 【资格初审】2月28…

招聘系统架构的设计与实现

在当今竞争激烈的人才市场中&#xff0c;有效的招聘系统对企业吸引、筛选和管理人才至关重要。本文将探讨招聘系统的架构设计与实现&#xff0c;帮助企业构建一个高效、可靠的人才招聘平台。 ## 1. 系统架构设计 ### 1.1 微服务架构 招聘系统通常采用微服务架构&#xff0c;将…

提高办公效率:Excel在文秘与行政办公中的应用技巧

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今信息化时代&#xff0c;Excel作为一款常…

C# 经典:ref 和 out 的区别详解

在C#中&#xff0c;ref和out关键字用于按引用传递变量&#xff0c;它们在变量传递、输出参数、返回值以及异常处理等方面有一些重要区别。本文将详细阐述这些差异。 1. 变量传递 ref和out关键字都可以用于方法的参数传递。它们的主要区别在于如何处理变量的引用。 ref关键字…

wordpress模板购买网站推荐

简站wordpress主题 老牌wordpress开发团队&#xff0c;开发过数百款wordpress主题&#xff0c;作品是最好的简历&#xff0c;靠作品说话&#xff0c;看作品喜欢不喜欢就可以了。 https://www.jianzhanpress.com WP模板牛 免费wordpress下载网站&#xff0c;上面有上百款免费…

大学课本电子版下载

原文&#xff1a;https://www.zhihu.com/question/356005353

一款.NET下 WPF UI框架介绍

WPF开源的UI框架有很多,如HandyControl、MahApps.Metro、Xceed Extended WPF Toolkit™、Modern UI for WPF (MUI)、Layui-WPF、MaterialDesignInXamlToolkit、等等,今天小编带大家认识一款比较常用的kaiyuanUI---WPF UI,这款ui框架美观现代化,用起来也超级方便, 界面展示…

No matching version found for get-symbol-description@^1.0.2前端项目报错解决(亲测可用)

目录 一、问题详情 二、解决方案 一、问题详情 拉取一个新的项目的时候&#xff0c;前端进行install依赖的时候&#xff0c;报了如下的错误。 6120 verbose node v16.15.1 6121 verbose npm v8.11.0 6122 error code ETARGET 6123 error notarget No matching version foun…

UE5渲染视频教程推荐

学习视频 虚幻引擎5&#xff01;如何导出为 MP4 和 MOV 视频文件&#xff01;_哔哩哔哩_bilibili UE4小教程&#xff1a;如何录制游戏过程动画并渲染_哔哩哔哩_bilibili 要点 1.record type要设置 2.ffmpeg下载安装配置

2024年1月京东洗衣机行业数据分析:TOP10品牌销量销额排行榜

鲸参谋监测的京东平台1月份洗衣机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;京东平台上洗衣机的销量约160万件&#xff0c;环比上个月增长约42%&#xff0c;同比去年下滑7%&#xff1b;销售额约28亿元&#xff0c;环比…

Vue-2

生命周期 Vue 生命周期 Vue 生命周期函数 Vue 生命周期过程中&#xff0c;会自动运行一些函数&#xff0c;被称为"生命周期钩子"&#xff0c;让开发者可以在特定阶段运行自己的代码 created 应用演示 <body><div class"box"><ul v-for&q…

Java设计模式——模板方法模式

当你在设计一个业务功能时&#xff0c;有一些方法/算法的结构是固定的&#xff0c;但其中的某些步骤可能会因不同的情境而发生不同的变化。你希望固定核心结构部分&#xff0c;然后灵活的去定制一些特定的步骤。这个时候可以考虑使用模板方法&#xff0c;通过定义一个抽象的父类…