在 MyBatis 中,<foreach>
标签用于遍历集合类型的条件,并且可以将多个参数值拼接成为 SQL 语句的一个部分,通常被用于批量插入或更新等操作。
<foreach>属性及介绍
属性 | 介绍 |
collection | 集合名称 |
item | 字符别名 |
index | 索引别名 |
open | 循环前缀 |
close | 循环后缀 |
separator | 分隔符 |
除了上述属性,<foreach>还有其他属性但不常用。
举例
批量增加
<insert id="insertBatch" parameterType="java.util.List"> INSERT INTO class (id,name,sex) VALUES // list 是传入的集合名称 item是每条集合内容的别名 separator用“,”分割 <foreach collection ="list" item="item" separator =","> (#{item.id},#{item.name},#{item.sex}) </foreach > </insert>
批量修改
<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" open="" close="" separator=";"> update class <set> <if test="item.name!=null"> name = #{item.name,jdbcType=VARCHAR}, </if> <if test="item.sex!=null"> sex = #{item.sex,jdbcType=VARCHAR} </if> </set> where id = #{item.id,jdbcType=INTEGER} </foreach> </update>
在Mysql中其实是没有foreach方法的,Mysql循环可以使用WHILE或LOOP来制造循环结构。
例如文章来源:https://www.toymoban.com/news/detail-731937.html
DECLARE i INT DEFAULT 0;
DECLARE max INT DEFAULT 18;
WHILE i < max DO
INSERT INTO class (id, name, …) VALUES (value1, value2, …);
SET i = i + 1;
END WHILE;
需要注意的是,批量操作结果可能会不符合预期,为了保证不出现误删、误改等情况发生,操作前最好先备份下需要操作的数据库或表。文章来源地址https://www.toymoban.com/news/detail-731937.html
到了这里,关于Mybatis批量插入、修改的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!