mybatis 批量插入以及merge into用法

一、mybiats foreach标签

<insert id="insertBatch" parameterType="List">
INSERT INTO TStudent(name,age)
<foreach collection="list" item="item" index="index" open="("close=")"separator="union all">
SELECT #{item.name} as a, #{item.age} as b FROM DUAL
</foreach>
</insert>
<insert id="insertBatch">
    INSERT INTO t_user
            (id, name, del_flag)
    VALUES
    <foreach collection ="list" item="user" separator =",">
         (#{user.id}, #{user.name}, #{user.delFlag})
    </foreach >
</insert>
<update id="mergeBank" parameterType="java.util.List">
		merge into T_MY_BANK a
		using
		(
		<foreach collection="list" index="index" item="item" open=""
				 close="" separator="union all">
			SELECT
			sys_guid() as id,
			#{item.bankCode,jdbcType=VARCHAR} as bankCode,
			#{item.bankName,jdbcType=VARCHAR} as bankName,
			#{item.bankName,jdbcType=VARCHAR} as subBankName,
			#{item.bankId,jdbcType=VARCHAR} as bankId,
			'1' as  isOverseas
			FROM dual
		</foreach>
		) b
		on (
		a.BANK_ID = b.bankId
		)
		when
		matched then
		UPDATE SET
		a.BANK_CODE = b.bankCode,
		a.BANK_NAME=b.bankName,
		a.SUB_BANK_NAME = b.subBankName,
		a.UPDATE_DT=sysdate
		when
		not matched then
		INSERT(
		a.ID,
		a.BANK_CODE,
		a.BANK_NAME,
		a.SUB_BANK_NAME,
		a.BANK_ID,
		a.CREATE_DT,
		a.UPDATE_DT
		) VALUES(
		b.id,
		b.bankCode,
		b.bankName,
		b.subBankName,
		b.bankId,
		sysdate,
		sysdate
		)
	</update>
<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>
<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>

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值