? ? ? ? 在 MyBatis 中,<foreach>
標簽用于遍歷集合類型的條件,并且可以將多個參數(shù)值拼接成為 SQL 語句的一個部分,通常被用于批量插入或更新等操作。?
<foreach>屬性及介紹
? ? ? ??
屬性 | 介紹 |
collection | 集合名稱 |
item | 字符別名 |
index | 索引別名 |
open | 循環(huán)前綴 |
close | 循環(huán)后綴 |
separator | 分隔符 |
除了上述屬性,<foreach>還有其他屬性但不常用。
舉例
批量增加
<insert id="insertBatch" parameterType="java.util.List"> ? ? ? ? INSERT INTO class ? ? ? ? ? ? (id,name,sex) ? ? ? ? VALUES ? // list 是傳入的集合名稱 ?item是每條集合內(nèi)容的別名 ?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循環(huán)可以使用WHILE或LOOP來制造循環(huán)結(jié)構(gòu)。
例如文章來源:http://www.zghlxwxcb.cn/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;
????????需要注意的是,批量操作結(jié)果可能會不符合預(yù)期,為了保證不出現(xiàn)誤刪、誤改等情況發(fā)生,操作前最好先備份下需要操作的數(shù)據(jù)庫或表。文章來源地址http://www.zghlxwxcb.cn/news/detail-731937.html
到了這里,關(guān)于Mybatis批量插入、修改的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!