Mybatis批量插入、修改

        在 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来制造循环结构。

例如

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;

        需要注意的是,批量操作结果可能会不符合预期,为了保证不出现误删、误改等情况发生,操作前最好先备份下需要操作的数据库或表。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值