首页 > 数据库 >mybatis控制动态SQL拼接标签之foreach标签

mybatis控制动态SQL拼接标签之foreach标签

时间:2023-04-27 21:44:22浏览次数:36  
标签:迭代 批量 标签 foreach SQL mybatis

mybatis控制动态SQL拼接标签之foreach标签

foreach标签主要用于构建in条件,可在sql中对集合进行迭代。也常用到批量删除、添加等操作中。
这个标签在实际业务中非常常用,当然运维旧项目也会发现,有些坑,用java循环执行sql来表示批量插入。

属性说明:
collection:collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合。
item :表示在迭代过程中每一个元素的别名
index :表示在迭代过程中每次迭代到的位置(下标)
open :前缀
close :后缀
separator :分隔符,表示迭代时每个元素之间以什么分隔
批量插入简单示例

<insert id="batchSave">
	   INSERT  INTO t_node_agent (host_name, os_type, created_date) VALUES 
	<foreach collection="list" item="emp" separator=",">
		(#{hostName}, #{osType}, #{createdDate})
	</foreach>
</insert>

这种循环插入方式适用于mysql数据库。
当然循环插入,也别指望返回主键了。
另外,foreach更多业务场景用于in操作。包含批量修改,和in查询。

标签:迭代,批量,标签,foreach,SQL,mybatis
From: https://www.cnblogs.com/hcgk/p/17360304.html

相关文章

  • 解决 Error querying database. Cause: org.postgresql.util.PSQLException: ��������: �û� "p
    最近做数据库作业做得很崩溃,本来就没学过java,结果还要用mybatis+servlet+jsp,,,,,没办法还是得学啊TT遇到个特别无语的报错:###Errorqueryingdatabase. Cause:org.postgresql.util.PSQLException:��������:�û�"postgres"Password��֤ʧ��###Theerrormayexistincom/test/entity/gra......
  • Sqlserver修改表结构提示不允许保存更改。
    在现有的表中去修改或者增加表字段的时候就会提示:不允许保存更改。您所做的更改要求删除并创建一下表。您对无法重新创建的表进行了更改或启用了“阻止保存要求重新创建表的更改”选项。、如何解决问题:操作步骤:点击“工具”→“选项”→"打开弹窗中选择(设计器)" →"表设......
  • mysql基础
    SQL语句SQL语句分类SQL分类:数据定义语言:简称DDL(DataDefinitionLanguage),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等数据操作语言:简称DML(DataManipulationLanguage),用来对数据库中表的记录进行更新。关键字:insert,delete,update等数据控制语言:简称DCL(Da......
  • MySQL
    1、回表查询与索引覆盖聚簇索引:主键索引一般是聚簇索引。聚簇索引的非叶子结点记录的是索引,叶子结点记录了对应的数据行(所有的字段)。非聚簇索引:叶子结点记录的是普通索引列与主键的对应关系(不记录别的字段)。如果走了普通索引,但想要select走的索引之外的字段,那么在根据非聚簇......
  • MySQL----日期相关
    获取当前日期selectcurdate();结果: 2023-04-27获取当前日期为几号selectday(curdate())结果:27在当前日期上加上时间间隔selectDATE_ADD(curdate(),interval2day)结果:2023-04-29一、获取本月第一天selectDATE_ADD(curdate(),interval-day(curdate())+1day)--获取本......
  • spring boot jpa MYSQL教程mysql连接的空闲时间超过8小时后 MySQL自动断开该连接
     SunApr1608:15:36CST2023Therewasanunexpectederror(type=InternalServerError,status=500).PreparedStatementCallback;SQL[selectuserIdfromfamilyxiao_UserConnectionwhereproviderId=?andproviderUserId=?];Nooperationsallowedaftercon......
  • Informix杀掉死锁的方法和查看死锁的sql语句
    Informix锁表产生的原因,要么是多个用户同时访问数据库导致该问题,要么是因为某个进程死了以后资源未释放导致的。如果是前一种情况,可以考虑将数据库表的锁级别改为行锁,来减少撞锁的机会;或在应用程序中,用setlockmodewait3这样的语句,在撞锁后等待若干秒重试。如果是后一种情况......
  • Mysql查询父、子节点
    一、概述相信大家在实际的开发工程中,都会遇到需要依据当前节点,查询出其上级节点或下级节点的需求。下面就我在工作过程中的处理方式记录如下,如有片面之处,欢迎批评指正。二、示例表结构初始表数据如图:查看表结构和初始数据脚本DROPTABLEIFEXISTS`t_cfg_region`;CREATE......
  • MySQL - SQL语句增加字段/修改字段/修改类型/修改默认值
    1.添加字段,比如我在数据表中添加一个age字段,类型为int(11)ALTERTABLEplayerADDCOLUMNageint(11);2.修改字段名,将age字段改成player_ageALTERTABLEplayerRENAMECOLUMNagetoplayer_age3.修改字段的数据类型,将player_age的数据类型设置为float(3,1)ALT......
  • SQL Server 2022 AlwaysOn新特性之包含可用性组介绍
    由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢......