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 语句。 其他数据库没有测试过兼容性,谢谢。