【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 查询条件。以下是一些常用的方法:
eq():用于添加等于条件,接受一个字段名和值作为参数。ne():用于添加不等于条件,接受一个字段名和值作为参数。gt():用于添加大于条件,接受一个字段名和值作为参数。lt():用于添加小于条件,接受一个字段名和值作为参数。ge():用于添加大于等于条件,接受一个字段名和值作为参数。le():用于添加小于等于条件,接受一个字段名和值作为参数。between():用于添加范围条件,接受一个字段名、最小值和最大值作为参数。in():用于添加多个值的条件,接受一个字段名和一个值列表作为参数。like():用于添加模糊匹配条件,接受一个字段名和一个模式作为参数。notIn():用于添加不在多个值列表中的条件,接受一个字段名和一个值列表作为参数。
这些方法可以组合使用,以构建复杂的动态 SQL 查询条件。例如,你可以使用多个 eq() 方法来添加多个等于条件,或者使用 and() 方法来组合多个条件。
三、注意事项
在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,需要注意以下几点:
字段名:传递给
QueryWrapper类的方法的字段名必须是数据库表中的实际字段名。如果字段名不正确,将无法正确构建查询条件。参数类型:传递给
QueryWrapper类的方法的参数类型必须与数据库表中的字段类型相匹配。如果参数类型不正确,将无法正确构建查询条件。条件组合:可以使用
and()方法或or()方法来组合多个条件。如果需要添加多个条件,可以使用QueryWrapper类的all()方法来添加多个条件。参数传递:如果传递的参数是复杂对象,需要确保该对象的属性名与数据库表中的字段名相匹配。如果参数是列表或集合,需要确保传递的参数类型与数据库表中的字段类型相匹配。
数据库方言:MyBatis-Plus 支持多种数据库方言,不同的数据库方言可能对 SQL 语法有不同的要求。因此,在使用
QueryWrapper类的方法构建动态 SQL 查询条件时,需要根据所使用的数据库方言进行调整。
总之,在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,需要注意字段名、参数类型、条件组合、参数传递和数据库方言等问题,以确保正确构建查询条件。
如何确保传递给`QueryWrapper`类的方法的参数是有效的?
在使用 QueryWrapper 类的方法构建动态 SQL 查询条件时,为了确保传递给 QueryWrapper 类的方法的参数是有效的,可以采取以下几个步骤:
验证参数类型:传递给
QueryWrapper类的方法的参数类型必须与数据库表中的字段类型相匹配。如果参数类型不正确,将无法正确构建查询条件。因此,在传递参数之前,需要确保参数类型是正确的。验证参数值:传递给
QueryWrapper类的方法的参数值必须是有效的。如果参数值无效,将无法正确构建查询条件。因此,在传递参数之前,需要确保参数值是有效的。处理空值:如果传递给
QueryWrapper类的方法的参数值为空,需要根据具体情况进行处理。例如,如果要添加等于条件,传递的参数值为空,可以使用isNotNull()方法来添加不为空的条件。处理复杂对象:如果传递的参数是复杂对象,需要确保该对象的属性名与数据库表中的字段名相匹配。如果参数是列表或集合,需要确保传递的参数类型与数据库表中的字段类型相匹配。
处理日期类型:如果传递的参数是日期类型,需要确保参数值的格式与数据库表中的字段类型相匹配。不同的数据库可能对日期类型的格式有不同的要求。
处理字符串类型:如果传递的参数是字符串类型,需要确保参数值的格式与数据库表中的字段类型相匹配。不同的数据库可能对字符串类型的格式有不同的要求。
参考
LambdaQueryWrapper的条件构造器方法对应Sql_后端_LouisMin23-华为云开发者联盟
Mybatis plus条件构造器QueryWrapper的简单用法_querywrapper.eq-CSDN博客
相关文章:
【MyBatis-Plus】之queryWrapper.apply用法
目录 一、queryWrapper.apply的含义及其用法 二、其他方法 三、注意事项 官网地址:MyBatis-Plus https://baomidou.com/ 一、queryWrapper.apply的含义及其用法 QueryWrapper.apply() 是 MyBatis-Plus 提供的方法,用于构建动态 SQL 查询条件。它允许…...
Centos中安装Docker及Docker的使用
在centos7系统中安装指定版本的docker,并通过docker使用安装mysql为例,阐述docker的使用。 2.1、Docker卸载及安装yum依赖 【卸载Docker,如果安装的Docker的版本不合适】 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-…...
亿道推出重磅加固平板!为行业发展注入新动力
随着科技生产力的不断发展,各行各业都得到质的飞跃。产品的迭代速度也大大加快,作为全球领先的加固行移动终端一站式提供商,亿道信息跟紧时代潮流,推出EM-I10J、EM-I20J两款均衡型加固平板,为行业发展注入新动力。 接地…...
Gemma谷歌(google)开源大模型微调实战(fintune gemma-2b)
Gemma-SFT Gemma-SFT(谷歌, Google), gemma-2b/gemma-7b微调(transformers)/LORA(peft)/推理 项目地址 https://github.com/yongzhuo/gemma-sft全部weights要用fp32/tf32, 使用fp16微调十几或几十的步数后大概率lossnan;(即便layer-norm是fp32也不行, LLaMA就没有这个问题, …...
MySQL:数据库中有哪些锁
1、全局锁 加上全局锁后整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞: 对数据的增删改操作,比如 insert、delete、update等语句;对表结构的更改操作,比如 alter table、drop table 等…...
MWC 2024丨美格智能发布全新5G-A模组及FWA解决方案,将5.5G带入现实
2月26日,在MWC 2024世界移动通信大会上,美格智能正式宣布推出5G-A模组SRM817WE以及全新的5G-A FWA解决方案,包含5G-A CPE解决方案SRT858M、5G-A MiFi解决方案SRT878H和5G-A ODU解决方案SRT853MX,旨在进一步提升网络性能࿰…...
Opencv双目校正函数 stereoRectify 详解
目录 函数的[官方解释](https://docs.opencv.org/4.x/d9/d0c/group__calib3d.html#ga617b1685d4059c6040827800e72ad2b6)函数原型参数说明:输入参数:输出参数: 函数代码测试 函数的官方解释 函数原型 void cv::stereoRectify ( InputArr…...
实现前端开发几个常用技巧
如何知道iframe下载完成 定时器轮询监听readyState的状态,如果是 complete 或者 interactive 说明文件加载完成。 常用的全屏居中 JS 函数 JS实现deepCopy 生成星级评分 JS数组扁平化之简单方法实现 toString 优点:简单,方便,对…...
Vue3 在SCSS中使用v-bind
template 先创建一个通用的页面结构 <template><div class"v-bubble-bg"></div> </template>js 在JS中先对需要用的数据进行定义: 可以是参数,也可以是data <script setup>const props defineProps({bgCol…...
玩转地下管网三维建模:MagicPipe3D系统
地下管网是保障城市运行的基础设施和“生命线”。随着实景三维中国建设的推进,构建地下管网三维模型与地上融合的数字孪生场景,对于提升智慧城市管理至关重要!针对现有三维管线建模数据差异大、建模交互弱、模型效果差、缺乏语义信息等缺陷&a…...
11.以太网交换机工作原理
目录 一、以太网协议二、以太网交换机原理三、交换机常见问题思考四、同网段数据通信全过程五、跨网段数据通信全过程六、关键知识七、调试命令 前言:在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以…...
【通信基础知识】完整通信系统的流程图及各模块功能详解
2024.2.29 抱歉最近在写毕设大论文,因此没有太多时间更新。然而,在写论文的过程中,发现自己对通信系统的了解还不够全明白,因此差了一些硕博论文总结了一个完整的通信系统流程图。若有不对的地方请多多指正//部分内容有参考ChatGP…...
k8s-项目测试环境部署
部署规划 概述 项目开发好后,我们需要部署,我们接下来就基于 阿里云云效 阿里云容器镜像服务 k8s 搭建部署环境 阿里云云效 : 放代码,可以做cicd(https://www.aliyun.com/product/yunxiao) 阿里云容器镜像服务 :…...
【Elasticsearch管理】缓存机制
文章目录 缓存Field data cache(字段数据缓存)Node query cache(节点查询缓存)Indexing buffer(索引缓冲区)Shard request cache(分片请求缓存)缓存失败启用/禁用缓存根据请求启用/禁…...
JS api基础初学
轮播图随机版 需求:当我们刷新页面,页面中的轮播图会显示不同图片以及样式 分析:①:准备一个数组对象,里面包含详细信息(素材包含) ②:随机选择一个数字,选出数组对应…...
uniapp实战:父子组件传参之子组件数量动态变化
需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…...
Ubuntu绑定USB接口到固定端口
绑定端口 打开终端,输入以下命令查看USB端口信息: udevadm info -a -n /dev/ttyUSB0执行后,可以看到部分输出如下: 找到第一个,a-b:c格式的KERNELS,记住这个值,后面会用到。 linlin-B660M-D2H-DDR4:~$ u…...
解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题
解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题 前几天出了教程本地部署gogs,在后期运行时发现两个问题: 第一:邮件明明配置了,后台显示未配置,…...
数字后端——DEF文件格式
文章目录 MACRO的不同orientationDEF中在macro orientation定义前需要留空格 MACRO的不同orientation DEF中在macro orientation定义前需要留空格 像下图中这种方向和分号之间没有空格的情况,就是有问题的格式。...
【可做课设、附完整技术文档】流式、异步、实时的Django聊天室!(需进一步定制可联系本人)
介绍 完整源码以及完整项目文档请看源码链接。 此Django项目实现了一个精致易扩展的实时聊天室,可直接作为网页开发的课程设计提交,也可二次开发,比如添加更好看的样式,或者更多更酷炫的功能。 实现了如下功能: 流…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
