天天看點

oracle和mysql批量Merge對比

orm架構采用mybatis,本部落格介紹一下批量合并merge用oracle和mysql來做的差別,

<!-- 批量更新新增關聯資訊 oracle-->
  <insert id="batchSaveTipsRelatedConfig" databaseId="oracle" parameterType="com.extend.tipsConfig.model.TipsRelatedModel">
    MERGE INTO t_tips_config_related A1 
    USING(<foreach collection="relatedTipsList" item="itm" separator="union">select #{itm.seq} seq ,
           #{itm.tipsSeq} tipsSeq , 
           #{itm.relaSeq} relaSeq,
           #{itm.tipsContent} tipsContent
              from dual
      </foreach>) A2
    ON(A1.tips_seq = A2.tipsSeq and A1.rela_seq = A2.relaSeq)
    WHEN MATCHED THEN
    UPDATE SET
            A1.tips_content = A2.tipsContent
    WHEN NOT MATCHED THEN
    INSERT(seq , tips_seq ,  rela_seq, tips_content)
    VALUES(A2.seq , A2.tipsSeq ,A2.relaSeq, A2.tipsContent)
  </insert>      
<!-- 批量更新新增關聯資訊 mysql-->
  <insert id="batchSaveTipsRelatedConfig" databaseId="mysql" parameterType="com.extend.tipsConfig.model.TipsRelatedModel">
    REPLACE INTO t_tips_config_related(seq,tips_seq,rela_seq,tips_content)  
    VALUES<foreach collection="relatedTipsList" item="itm" separator=",">(#{itm.seq},
           #{itm.tipsSeq}, 
           #{itm.relaSeq},
           #{itm.tipsContent})</foreach>
  </insert>