与<select>标签有关的内容介绍完了以后,下面就介绍一个实现批量插入或更新或删除的标签<foreach>。当然这个标签也可以用到<select>标签里实现in的查询场景,其实用法都是一样的,这里只以<insert>标签做批量插入介绍演示。
这里先假设有个POJO类叫User,有一张表t_user
ClassUser{ privateLongid; privateStringname; privateIntegerage; //get set}
CREATETABLE `t_user` ( `id` int(11)NOTNULL AUTO_INCREMENT, `name` varchar(30)NULL DEFAULT NULL, `age` int(11)NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE )
要实现批量插入用户数据可以用下面这种写法(以Mysql为例,Oracle或者其他数据库对批量数据开始和结尾符号要求不一样,自行搜索其他数据库的写法即可)
<insertid="insertUserBatch"parameterType="list"> INSERT INTO t_user (name, age ) VALUES <foreachcollection="list"item="obj"separator=","> (#{obj.name}, #{obj.age} ) </foreach></insert>
<foreach> 标签是 MyBatis 中用于在 SQL 查询中实现循环遍历的标签。它允许你根据集合或数组的元素,在 SQL 查询中动态地构建多个条件或参数,从而实现更灵活和动态的查询操作。
<foreach> 标签的基本语法如下:
<foreach collection="collectionName" item="itemName" index="indexName" open="(" separator="," close=")">
-- 在这里放入要循环的 SQL 片段,可以使用 #{item} 来引用集合或数组的元素
</foreach>
collection: 指定要遍历的集合或数组的名称,在 MyBatis 的 Mapper XML 中可以通过参数传递。
item: 指定集合或数组中的元素在循环过程中的变量名,可以在 <foreach> 标签内部引用。
index (可选): 指定循环索引的变量名,用于遍历数组时获取元素的索引。
open (可选): 指定循环开始时的字符串,通常是左括号 "(",表示开始拼接 SQL 语句的位置。
separator (可选): 指定每次循环元素之间的分隔符,用于拼接多个元素的 SQL 片段。
close (可选): 指定循环结束时的字符串,通常是右括号 ")",表示结束拼接 SQL 语句的位置。