博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量更新的注意事项
阅读量:6496 次
发布时间:2019-06-24

本文共 1265 字,大约阅读时间需要 4 分钟。

hot3.png

小弟昨日一个需求,就是讲一个list集合 update到一张表中,但与insert的写法不同。需要将list封装成map 在传入xml中进行foreach

update debt_current_user_holding_temp dcu set dcu.yesterday_amount =
when #{debtCurrentUserHoldingTemp.id} then #{debtCurrentUserHoldingTemp.yesterdayAmount}
dcu.amount =
when #{debtCurrentUserHoldingTemp.id} then #{debtCurrentUserHoldingTemp.amount}
dcu.updated_at =
when #{debtCurrentUserHoldingTemp.id} then #{debtCurrentUserHoldingTemp.updatedAt}
where dcu.id in
#{debtCurrentUserHoldingTemp.id}

这里要注意,set 后面跟的字段,要将open设置成 case id close = “end”,而where条件要使用in 原因是mybatis在解析时,会将其条件in(1,2,3)等等。而set 后面的字段  会解析成  case id when xx then x when xxx then xxx end,下一个字段,最后一个字段是end  没有逗号。

int updateYesterdayAmountBatch(Map
tt);

上述是 mapper中的内容。这样就能实现mybatis的批量更新。原因是mybatis默认会将list类型的参数自动封装成map 并且key= list,vaue 就是集合。可是有时候直接传入list也是可以的。不知道为什么。按照我的写法。如果直接传入list参数 ,会报错,parameter xxx not found。也不知是哪里的问题。后续研究出来接着补充。

insert 使用list作为参数就能直接识别。。为啥update 必须要map呢?待小弟去研究一下mybatis文档再议。

转载于:https://my.oschina.net/u/2543341/blog/2252122

你可能感兴趣的文章
Java学习之路(三)
查看>>
Codeforces 314 E. Sereja and Squares
查看>>
bzoj千题计划283:bzoj4516: [Sdoi2016]生成魔咒(后缀数组)
查看>>
bzoj千题计划315:bzoj3172: [Tjoi2013]单词(AC自动机)
查看>>
将工程改造为SOA架构
查看>>
设置 微信分享时候的的标题 缩略图 连接 描述
查看>>
如何打开注册表编辑器
查看>>
【管理心得之六】判定工作是否完成,标准是什么
查看>>
《直播疑难杂症排查系列》之一 :播放失败
查看>>
Go eclipse plugin
查看>>
ln命令总结
查看>>
内部排序冒泡排序、插入排序、选择排序、快速排序的算法和PHP实现
查看>>
ASP.NET MVC Form验证
查看>>
学习OpenSeadragon之三 (覆盖层Overlayer的使用)
查看>>
【noi 2.6_1759】LIS 最长上升子序列(DP,3种解法)
查看>>
【洛谷 p3371】模板-单源最短路径(图论)
查看>>
c#生成静态html文件,封装类
查看>>
[git]图解git常用命令
查看>>
洛谷 P2947 [USACO09MAR]向右看齐Look Up【单调栈】
查看>>
zoj 2313 Chinese Girls' Amusement(2-A)
查看>>