mybatis 批量插入以及merge into用法

一、mybiats foreach标签


INSERT INTO TStudent(name,age)

SELECT #{item.name} as a, #{item.age} as b FROM DUAL


    INSERT INTO t_user
            (id, name, del_flag)
    VALUES
    
         (#{user.id}, #{user.name}, #{user.delFlag})
    


		merge into T_MY_BANK a
		using
		(
		
			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
		
		) 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
		)
	

    
        SELECT to_char(sysdate,'yyyymmdd')||USER_SEQ.nextval AS ID FROM dual
    
    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}
    )


 begin  
 
    UPDATE USER_INFO
    
        
            
        
    
	
  
   ;end;

 

你可能感兴趣的:(知识积累)