1.批量写入
<insert id="insert" parameterType="java.util.List">
insert into user_info
(
id,name,age
)
<foreach collection ="list" item ="item" index ="index" open="(" close=")" separator ="union all">
select
#{item.id,jdbcType=VARCHAR},
#{item.name,jdbcType=VARCHAR},
#{item.age,jdbcType=VARCHAR}
from dual
</foreach >
</insert>
2.批量更新
<update id="updateBatch" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" separator=";" >
UPDATE USER_INFO
<set>
<if test="null != item.name">
<![CDATA[name = #{item.name,jdbcType=VARCHAR}]]>
</if>
</set>
<![CDATA[
WHERE ID = #{item.id,jdbcType=VARCHAR}
]]>
</foreach>
;end;
</update>
3.MERGE INTO
<insert id="insert" parameterType="com.pojo.UserInfo">
<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
SELECT to_char(sysdate,'yyyymmdd')||USER_SEQ.nextval AS ID FROM dual
</selectKey>
MERGE INTO user_info ui
USING (SELECT #{userId} user_id FROM dual) d
ON (ui.userId = d.user_id)
WHEN matched THEN
UPDATE SET ui.name = #{name}
WHEN not matched THEN
INSERT (ID,user_id,name
)VALUES(
#{id,jdbcType=VARCHAR},#{userId,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR}
)
</insert>