【Mybatis】动态SQL标签3

【深入解析MyBatis动态SQL中条件标签的演进与实践】 本文深入解析MyBatis动态SQL的条件标签演进与实践。作者王文峰(优快云博客之星)通过经典案例对比iBatis 2.x与MyBatis 3.x的动态SQL实现差异,重点分析旧版<isEqual>等标签的局限性和新版<if>/<choose>标签的优势。文章提供动态字段包含、多条件处理等最佳实践方案,包括OGNL表达式使用、复杂条件判断和空值处理技巧,并解答版本兼容等常见问题。最后建议开发者优先采用MyBatis 3新特性,逐步重构旧代码以提升SQL可维护性。本文出自 阅读详情

foreach标签是使用举例

在实际应用中,我常常需要根据多个id批量的操作:

查询指定id的记录:

这时就可以用foreach标签: 

collection="ids" : 接口上传过来的数值或list集合或者map集合都可以

item="id" :设定遍历集合或数组里的每一个值的迭代变量

separator="," : 因为要构造出 (1,2,3)这种样子的字符串,设定中间的分隔符

open="(" : 因为要构造出 (1,2,3)这种样子的字符串,设定前缀的符号(

close=")": 因为要构造出 (1,2,3)这种样子的字符串,设计结尾的后缀)

index: 还有这个属性,数组或list集合的时候,设置索引变量,如果是Map集合就是map的key的迭代变量,这里的例子用不着这个。

Mysql数据库小批量保存记录

批量保存的sql语句,可以这么写!所以,我们可以利用foreache标签来对values后面的部分构造出来: 

也可以循环整个insert语句在线文档-mysql-5.1-zh: 

但这样写,mysql数据库要求链接字符串要跟上链接属性allowMultiQueries:

Oracle数据库小批量保存记录:

Oracle数据库和Mysql数据库不一样,它不支持insert...values(),(),()这种写法,它支持的是以下的begin...end和中间表的两种写法:

①begin...end的写法,中间的insert语句用分号分割:

begin
INSERT INTO  sb_users (id,username,password,state,reg_date)
   VALUES (40,'aa','aa',1,to_date('2018-12-1','yyyy-mm-dd'));
INSERT INTO  sb_users (id,username,password,state,reg_date)
   VALUES (41,'bb','bb',1,to_date('2018-12-2','yyyy-mm-dd'));
INSERT INTO  sb_users (id,username,password,state,reg_date)
   VALUES (42,'aa','aa',1,to_date('2018-12-3','yyyy-mm-dd'));
end;

②中间表的写法:

INSERT INTO  sb_users (id,username,password,state,reg_date)
	select USERID_SEQ.nextval,username,password,state,regDate FROM(
		select 'testaa' username,'123aa' password,1 state,to_date('2018-12-1','yyyy-mm-dd') regDate from dual
		union
		select 'testbb' username,'123bb' password,1 state,to_date('2018-12-1','yyyy-mm-dd') regDate from dual
		union
		select 'testcc' username,'123cc' password,1 state,to_date('2018-12-1','yyyy-mm-dd') regDate from dual
	)

智能气象站:ESP32驱动的心知天气数据可视化实践 本文详细介绍了基于ESP32微控制器和心知天气API构建智能气象站的完整实践。通过Arduino开发环境,实现天气数据的获取、JSON解析与OLED屏可视化展示,涵盖硬件连接、API配置、低功耗优化及部署问题排查,为物联网开发者提供实用指南。 阅读详情

相关推荐

从多项式到神经网络:DPD算法演进史及其在RRU中的工程实现

本文系统梳理了数字预失真(DPD)算法从经典多项式模型、查表法到神经网络驱动的演进历程,并深入探讨了其在基站射频单元(RRU)中面临的硬件资源约束与工程实现挑战。文章为通信设备的技术决策者提供了算法选型、性能权衡及混合架构设计的实用评估框架,助力在性能、功耗与成本间找到最优平衡。

cherry的博客 1078

Mybatis 自定义批量更新

分享知识 传递快乐 因为项目需要,需要根据账号对数据批量更新,而传统的批量更新是根据id更新,一条一条更新又比较耗时,下面记录一下对其它字段批量更新的操作。 由于环境使用的Mybatis,在此以mybatis批量更新做示。 接口定义 int batchUpdate(List<StudentEntity> list); XML文件 <!-- 通过接收传进来的参数list进行循环着组装sql --> <update id="batchUpdate" param

旷野历程 1475

STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入

本例程使用STM32G070xx芯片,Flash大小128KB,Flash每页(2048字节)写满后再擦除。操作存储区分为64块,每块32字节,即写满64次擦除一次;标定存储区分为16块,每块128字节,即写满16次擦除一次,每个存储区的块都有各自的头部标记

RaphaelCeo的博客 1549

[MyBatis] foreach collection用法

foreach一般在使用在SQL语句的IN条件中,目的是确认某个字段是否在目的范围内。在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了foreach功能,该功能比较强大,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。 格式为 WH...

Cessi的博客 2286

EC20模块实战:5步搞定MQTT连接阿里云IoT(附常见错误排查)

本文详细介绍了使用EC20 4G模块通过AT指令连接阿里云IoT平台的完整实战流程。文章以智能农业项目为背景,从硬件接线、网络注册、PDP激活,到MQTT连接配置、一型一密动态注册及数据收发,提供了清晰的5步操作指南,并重点附上了常见错误排查方法,帮助开发者快速实现稳定可靠的物联网设备上云。

weixin_29209801的博客 196

MAX30102传感器实战:从寄存器配置到Arduino心率血氧监测

本文详细介绍了MAX30102传感器在Arduino平台上的实战应用,从寄存器配置到心率血氧监测的全过程。通过清晰的代码示例和实用技巧,帮助开发者快速实现脉搏血氧仪功能,包括I2C通信、FIFO数据处理及算法实现,适用于健康监测和可穿戴设备开发。

weixin_29182481的博客 511

mybatis自定义动态sql批量保存(插入或更新)数据

mybatis批量插入更新动态sql

Killua____的博客 1530

傻瓜教程:使用GeoServer发布离线地图服务

一、离线地图下载 离线地图分为两种:一种叫“金字塔瓦片”数据,一种叫“矢量地图数据”。我们看的在线地图比如,百度,谷歌,高德等等网页上的地图,都是金字塔瓦片;另外一种是手机上用来导航的,比如高德地图APP,也可以下载离线地图数据,这个就是矢量的。 卫星影像地图都是金字塔瓦片,无矢量数据。 因此,我们所说的离线地图下载通常都是指离线地图金字塔瓦片数据下载。 离线地图金字塔瓦片搭建的离线地图服务分很多种:一般有WEB方式,TMS、WMTS/WMS等等,不同的应用有不同...

米兰的小码农的博客 1万+

MyBatis动态SQL之<foreach>用法

MyBatis动态SQL之用法

棒棒糖的糖不含糖的博客 4198

UE5新手必看:如何在UMG控件中嵌入浏览器实现Web页面展示(附完整步骤)

本文为UE5新手提供了在UMG控件中无缝集成Web浏览器的完整实战指南。详细介绍了从启用WebBrowser插件、创建并配置WebBrowser控件蓝图,到编写动态加载与交互逻辑,以及在游戏关卡中实例化UI的全过程。文章还分享了性能优化技巧与常见问题排查方法,帮助开发者高效实现游戏UI内的Web页面展示与交互。

weixin_29243063的博客 713

在 SAP S/4HANA Public Cloud 中,用 RAP 一键生成 PDF 并在 Fiori 前端触发下载的完整方案

create;update;delete;// 生成并返回当前文档上下文。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 416

INSERT INTO语句

INSERT INTO @TA(XM,XF) VALUES('张三',100)INSERT INTO @TA(XM,XF) VALUES('李四',200)INSERT INTO @TA(XM,XF) VALUES('张三',100)INSERT INTO @TB(XM,HS) VALUES('李四',600)INSERT INTO @TB(XM,HS) VALUES('张三',50)INSERT INTO @TB(XM,HS) VALUES('张三',30)(数据1,数据2,数据3),

悠然见南山 316

C# 上位机内存泄漏排查指南:3 个工具 + 4 个技巧,从 GC 频繁到稳定运行 720 小时

C# 上位机内存泄漏排查的核心是「先定位泄漏存在,再追溯引用根源,最后修复验证通过「Visual Studio 诊断工具(快速定位)+ dotMemory(深度分析)+ PerfView(生产监控)」三个工具的配合,结合「复现场景、排查静态成员+事件、检查非托管资源、GC 日志验证」四个技巧,可高效解决绝大多数泄漏问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 739

MyBatis3 动态sql常用标签

MyBatis3 动态sql常用标签 动态sql是MyBatis的一大特性。 动态sql说白了就是在不改变数据库语言上进行添加标签完成相对复杂的操作功能。意思就是不能改变最终的数据库语言。 下面我介绍项目中最常用的几个标签 1、if标签 if标签类似java代码中的if,满足条件,则添加if标签内的sql语句。 例如: <select id="qeuryStaff"> SELECT * FROM STAFF WHERE staff_sex= ‘男’ <if test="titl

ningyq_的博客 411

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MyBatis动态SQL标签3

index: 还有这个属性,数组或list集合的时候,设置索引变量,如果是Map集合就是map的key的迭代变量,这里的例子用不着这个。批量保存的sql语句,可以这么写!separator="," : 因为要构造出 (1,2,3)这种样子的字符串,设定中间的分隔符。open="(" : 因为要构造出 (1,2,3)这种样子的字符串,设定前缀的符号(close=")": 因为要构造出 (1,2,3)这种样子的字符串,设计结尾的后缀)item="id" :设定遍历集合或数组里的每一个值的迭代变量。

CodeRunning的博客 493

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Mybatis入门(七)SpringBoot整合Mybatis_3 动态SQL标签

SpringBoot整合Mybatis 动态SQL标签

weixin_46030002的博客 997

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

看程序学mybatis 动态SQL3-动态SQL - MYBATIS CHOOSE WHEN OTHERWISE 标签例子

Mybatis里面没有else标签,但是可以使用when otherwise标签来达到这样的效果。 SELECT * FROM product_ and name like concat('%',#{name},'%') and price > #{price} ...

tujiahao1的博客 180

mybatis动态SQL多条件查询3 - trim标签

上一节我们介绍的where标签可以帮助我们去掉标签前多余的and或者or,但是不能去掉标签后的and/or, 本节我们介绍的trim标签可以帮助我们解决这个问题。 目录 1.trim标签属性介绍 2. mapper接口不变 3. mapper映射文件 4. 参数有内容时 4.1 测试结果 5. 参数无内容时 5.1 测试结果 1.trim标签属性介绍 trim标签属性 prefix 将trim标签前添加指定内容 prefixOverrides 将trim标签前去掉.

m0_53753920的博客 994

MyBatis动态SQL(一)

MyBatis 的强大特性之一便是它的动态 SQL。动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。 1.if标签 映射文件配置: <select id="q...

weixin_42510923的博客 165

MyBatis3源码深度解析(二十)动态SQL实现原理(一)动态SQL的核心组件

在使用JDBC API进行编程时,通常都要对SQL语句进行拼接,甚至还要根据不同的查询条件动态地拼接SQL语句,这个过程是比较繁琐且容易出错的,以致于花费更多的时间。MyBatis的动态SQL特性就用于解决这个问题。本节先对动态SQL的基本使用,以及涉及到的核心组件进行研究,下一节完整地研究动态SQL的解析过程。

挑灯日记 记录自己 3147

Mybatis(三)MyBatis 动态SQL

在 MyBatis 3 之前的版本中,使用动态 SQL 需要学习和了解非常多的标签,现在 MyBatis 采用了功能强大的 OGNL( Object-Graph Navigation Language)表达式语言消除了许多其他标签, 以下是 MyBatis 的动态 SQL 在 XML 中支持的几种标签 。 if choose(when、oterwise) trim(where、...

好风凭借力 54

学习笔记-SSM之Mybatis3(动态sql)

https://mybatis.org/mybatis-3/zh/dynamic-sql.html OGNL表达式介绍 [https://www.cnblogs.com/renchunxiao/p/3423299.html] 动态 SQL简介 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 使

scc_make_belief的博客 288

MyBatis动态SQL

动态SQL相关问题及实现

weixin_54438185的博客 271

MyBatis动态sql

if标签和where标签的使用 <select id="findUserByCondition" resultType="domain.User" parameterType="domain.User"> select * from user <where> <if test="username != null" > and username = #{username} </if> ...

Steve_v的博客 163

MyBatis之动态 SQL

动态 SQL MyBatis 3 动态SQL MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素 涉及的标签 if choose (when, otherwise) trim (where, set) foreach 注意事项 mybatis if标签判断 ...

thebigdipperbdx的博客 203

mybatis:foreach与if标签组合,动态sql的完成

java mybatis的使用心得

Dmaple的博客 3616
上一篇: 【Mybatis】动态SQL标签2
下一篇: 2025最新AI软件、AI绘画系统,PC端+手机端H5系统源码+Prompt指令预设使用指南
synchronizeOn
博客等级 码龄3年 1193粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值