Mybatis 批量插入操作ON DUPLICATE KEY UPDATE使用

做后台接口时,经常会有插入与保存合一的接口,这时有的同学会通过判断传入的参数有没有主键id来判断应该再调用mapper中的_insert_还是_update_,其实只要在同一个statement中使用ON DUPLICATE KEY UPDATE即可实现。该方法普通使用很简单,但是如果是批量操作接口又要怎么写呢,请继续往下看。

mybatis中批量插入数据 当主键或唯一键重复时 对数据进行更新用ON DUPLICATE KEY UPDATE来实现

<insert id="batchSaveCommissionSummaryList" parameterType="list" >

    insert into commission_summary
      (enterprise_id,enterprise_name,in_province_amount,in_province_rate,in_province_commission,out_province_amount,out_province_rate,
      out_province_commission,total_amount,total_commission,month,create_time)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (#{item.enterpriseId},#{item.enterpriseName},#{item.inProvinceAmount},#{item.inProvinceRate},#{item.inProvinceCommission},#{item.outProvinceAmount},
      #{item.outProvinceRate},#{item.outProvinceCommission},#{item.totalAmount},#{item.totalCommission},#{item.month},#{item.createTime})
    </foreach>
    ON DUPLICATE KEY UPDATE
        enterprise_id = values(enterprise_id),
        enterprise_name = values(enterprise_name),

        in_province_amount = values(in_province_amount),

        in_province_rate = values(in_province_rate),

        in_province_commission = values(in_province_commission),

        out_province_amount = values(out_province_amount),

        out_province_rate =values(out_province_rate),

        out_province_commission = values(out_province_commission),

        total_amount = values(total_amount),

        total_commission = values(total_commission),

        month = values(month),

        create_time = values(create_time)
  </insert>

注意values里面要用数据库字段来实现对数据的更新而不是传入的参数字段


版权声明:本文为jiong9412原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。