MyBatis foreach 标签查询案例 MyBatis 批量插入 MyBatis foreach标签批量插入

文章介绍了如何使用MyBatis的foreach标签进行条件查询和批量插入操作,包括在IN查询中的用法和三种不同的批量插入方式:普通插入、UNIONALL(括号版和无号版)。并提示了不同数据库(如MySQL、Oracle、SQLServer)对批量插入的支持情况和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        MyBatis foreach 标签查询案例 MyBatis 批量插入 MyBatis foreach标签批量插入

一、查询语句


<if test="userNos != null and userNos != ''">
    AND a.USER_NO IN
    <foreach collection="userNos.split(',')" item="e" open="(" close=")" separator=",">
        #{e}
    </foreach>
</if>

二、批量插入

        1、批量insert

<insert id="insertBatchSql" parameterType="list">
    INSERT INTO user_info (`user_no`, `name`, `age`)
    VALUES
    <foreach collection="list" item="e" separator=",">
         (#{e.userNo}, #{e.name}, #{e.age})
    </foreach>
</insert>

        2、批量union all (括号版)


<insert id="insertBatchUnionAll2" parameterType="list">
    INSERT INTO user_info (`user_no`, `name`, `age`)
    <foreach collection="list" item="e" separator="UNION ALL">
      ( select
        #{e.userNo}, #{e.name}, #{e.age}
        from dual
        )
    </foreach>
</insert>

 

        3、批量union all (无号版)

<insert id="insertBatchUnionAll" parameterType="list">
    INSERT INTO user_info (`user_no`, `name`, `age`)
    <foreach collection="list" item="e" separator="UNION ALL">
        select
          #{e.userNo}, #{e.name}, #{e.age}
        FROM DUAL
    </foreach>
</insert>

 

        4、注意:

        批量插入建议使用 方法2和3 , 经测试 支持 MySQL 和 Oracle 数据库有效; 若是 sql server 数据库,则需要去掉 FROM DUAL 语句。 其他数据库没有测试过兼容性,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值