重复插入时更新sql,replace into,ibatis使用replace into报错

293 阅读1分钟

发生场景

工作时发现,之前定时任务拉取数据时,都是先查询一遍数据,判断是否重复后再进行添加,这样效率太慢,便直接改写xml语句。因为框架使用的ibatis一开始在标签中改成replace into是不能用的,后查询相关资料后改成insert into on dumplicate key update语句即可正常使用。需数据库设置唯一索引,即insert into on dumplicate key update语句后的字段。

使用

ibatis使用,此处数据库唯一索引为name,pwd

replace into(ibatis会报错,mybatis正常)

<insert id="insert">
    replace into test (name,pwd) values(#name#,#id#)
</insert>

insert into on dumplicate key update(替代replace into使用)

<insert id="insert">
    insert into test (name,pwd) values(#name#,#id#)
    ON DUPLICATE KEY UPDATE
    name=#name#,pwd=#pwd#
</insert>