前言

在实际开发中,经常遇到更新和插入操作,很多时候,我们会将两个方法的sql合并为一个,即可以实现插入操作,也可以实现更新操作,下面给与详细的示例

sql实例

基本语法:

INSERT INTO tablename(field1,field2, field3, ...) VALUES(value1, value2, value3, ...) ON DUPLICATE KEY UPDATE field1=value1,field2=value2, field3=value3, ...; 

mapper方法:
Integer batchUpdatePilicoinAward(List list);

<insert id="batchUpdatePilicoinAward">
    insert into royalty_detail (trade_id,pilicoin_award,update_time,award_status) values
    <foreach collection="list" item="item" index="index" separator=",">
 (#{item.tradeId},#{item.pilicoinAward},#{item.updateTime},#{item.awardStatus})
    </foreach>
    on duplicate key update 
    pilicoin_award = values(pilicoin_award),
    update_time =values(update_time),
    award_status = values(award_status);
</insert>

使用说明

以上sql语句,先执行insert into插入语句,如果插入失败,则执行update更新语句,从而实现插入和更新sql合并功能。
但以上语句的执行成功需要一个条件,也就是插入语句的字段中必须至少有一个字段是唯一索引,比如id,如果都可以插入成功,那更新就不会执行了。

更多推荐

SQL语句中Update和Insert语句合并