根据某一个索引可以把insert和update放置到一个sql中

业务背景:因为新增和修改的数据库表很多,新增和修改的操作也很多并且为批量操作,所以就把新增和修改的sql写到一个sql中,这样我可以把要保存和修改的数据放到一个集合中批量操作
这是我的sql,入参是一个集合
这是只是伪sql
insert into 表名
(列名)
values
for
(页面传过来的数据)
on duplicate key update
数据库列名 = values(数据库列名)这个很关键,有多少都是这样写

批量更新的sql
1、.replace into 批量更新

replace into test_tbl (id,dr) values (1,‘2’),(2,‘3’),…(x,‘y’);
例子:replace into book (Id,Author,CreatedTime,UpdatedTime) values (1,‘张飞’,‘2016-12-12 12:20’,‘2016-12-12 12:20’),(2,‘关羽’,‘2016-12-12 12:20’,‘2016-12-12 12:20’);

2、insert into …on duplicate key update批量更新

insert into test_tbl (id,dr) values (1,‘2’),(2,‘3’),…(x,‘y’) on duplicate key update dr=values(dr);

例子:insert into book (Id,Author,CreatedTime,UpdatedTime) values (1,‘张飞2’,‘2017-12-12 12:20’,‘2017-12-12 12:20’),(2,‘关羽2’,‘2017-12-12 12:20’,‘2017-12-12 12:20’) on duplicate key update Author=values(Author),CreatedTime=values(CreatedTime),UpdatedTime=values(UpdatedTime);

replace into 和 insert into on duplicate key update的不同在于:

replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值,用这个要悠着点否则不小心清空大量数据可不是闹着玩的。
insert into 则是只update重复记录,不会改变其它字段。
update user name = #{item.name} where id = #{item.id}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值