批量插入更新的SQL实现

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明来自我的CSDN博客:链接地址 https://blog.csdn.net/zcyzsy/article/details/84872420

昨天需要实现一个mybatis+MySQL的数据层接口,一条可以批量插入、更新的SQL语句,插入整个list,设置一个唯一的key,当表中有该条记录,就更新该记录,没有的就插入一条新纪录。下面给出具体的SQL语句:

<insert id="batchRefresh" parameterType="java.util.List">
    insert into Fanxing_Template_Field (
    id, io_type, component_type,
    fargo_biz_key, create_time, updateTime
    )
    values
    <foreach collection="list" item="item" separator=",">
      (
      #{item.id,jdbcType=INTEGER}, #{item.ioType,jdbcType=INTEGER}, #{item.componentType,jdbcType=INTEGER},
      #{item.fargoBizKey,jdbcType=VARCHAR}, #{item.createTime,jdbcType=OTHER}, #{item.updatetime,jdbcType=OTHER}
      )
    </foreach>
    ON DUPLICATE KEY UPDATE
    fargo_biz_key = values(fargo_biz_key),
    io_type = values(io_type),
    component_type =  values(component_type),
    updateTime = values(updateTime);

注意写好每个字段的名字和类型就好,最后标红的字段,是你要更新的字段,这里我需要更新这五个字段,就赋值了五个。

虽然replace也可以实现,但使用 ON DUPLICATE KEY可以保持表中的自增主键ID保持不变!

如上,就实现了批量插入更新的功能,比较方便。

当然还可以通过

 If exists

 update

else

Insert

这样的形式去实现,更麻烦一点。

猜你喜欢

转载自blog.csdn.net/zcyzsy/article/details/84872420