Mybatis3.0如何做批量update并返回批量更新的结果呢

pilishou 2013-04-23 11:16:39
我第一次使用mybatis不是很熟悉有个语句不知道如何写,请用过的朋友指教一下
场景
update table set field1='123',field2='we',field3='1212', field4=1, field5=0 where id=1
update table set field1='324',field2='tet',field3='244', field4=0, field5=1 where id=2
....
....
....
我的更新数据与更新的条件全部在一个List列表中的,要求更新后返回每一条的更新结果。
mybatis的有规律批量更新我知道怎么写,比如把某个字段批量更新条件在一个列表中的,但是像这种多个字段更新都不一样,而且条件也不一样的要怎么写?而且我看了mybatis的<update>xml标记好像没有resultType=一个数组的。

我目前是这样做的
<update ....>
<foreach ........>
update table .............. where .....
</foreach>
</update>
这样返回的结果是一个int型,如果某条记录没更新到或者失败我也不知道。而且感觉这样好像并不是一个最优方案,请大家提供一下更好的方法给我
...全文
4281 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
那条出错了,只能看日志了。
vgtcsm 2014-10-23
  • 打赏
  • 举报
回复
引用 3 楼 titth 的回复:
楼主,能把你的xml贴全出来吗,我用的是<update id="updateCustomerData" > <foreach collection="list" item="item" index="index" > update t_customer set SRID=#{item.srID}, CUSTID=#{item.custID}, CUSTNAME=#{item.custName}, CUSTADDRESS=#{item.custAddress}, DELIVERYADDRESS=#{item.deliveryAddress}, PHONE1=#{item.phone1}, PHONE2=#{item.phone2}, CONTACT=#{item.contact}, COMPCODE=#{item.compCode}, CONSUMERCHANNEL=#{item.consumerChannel}, CUSTCHANNEL=#{item.custChannel}, VIVIDCHANNEL=#{item.vividChannel}, SALELEVEL=#{item.saleLevel}, CUSTTYPE=#{item.custType}, CARRIERSID=#{item.carriersID}, MARKET=#{item.market}, STATUS=#{item.status}, DELIVERYPLANT=#{item.deliveryPlant}, VISITMON=#{item.visitMon}, VISITTUE=#{item.visitTue}, VISITWED=#{item.visitWed}, VISITTHU=#{item.visitThu}, VISITFRI=#{item.visitFri}, VISITSTA=#{item.visitSta}, VISITSUN=#{item.visitSun}, ARRIVEDATETIME=#{item.arriveDateTime} where CUSTID=#{item.custID} </foreach> </update> 但是不好用
你这样执行会报错的 mybatis不支持多条sql
pilishou 2014-03-27
  • 打赏
  • 举报
回复
我的用法跟你(titth)的一样啊
titth 2013-08-07
  • 打赏
  • 举报
回复
楼主,能把你的xml贴全出来吗,我用的是<update id="updateCustomerData" > <foreach collection="list" item="item" index="index" > update t_customer set SRID=#{item.srID}, CUSTID=#{item.custID}, CUSTNAME=#{item.custName}, CUSTADDRESS=#{item.custAddress}, DELIVERYADDRESS=#{item.deliveryAddress}, PHONE1=#{item.phone1}, PHONE2=#{item.phone2}, CONTACT=#{item.contact}, COMPCODE=#{item.compCode}, CONSUMERCHANNEL=#{item.consumerChannel}, CUSTCHANNEL=#{item.custChannel}, VIVIDCHANNEL=#{item.vividChannel}, SALELEVEL=#{item.saleLevel}, CUSTTYPE=#{item.custType}, CARRIERSID=#{item.carriersID}, MARKET=#{item.market}, STATUS=#{item.status}, DELIVERYPLANT=#{item.deliveryPlant}, VISITMON=#{item.visitMon}, VISITTUE=#{item.visitTue}, VISITWED=#{item.visitWed}, VISITTHU=#{item.visitThu}, VISITFRI=#{item.visitFri}, VISITSTA=#{item.visitSta}, VISITSUN=#{item.visitSun}, ARRIVEDATETIME=#{item.arriveDateTime} where CUSTID=#{item.custID} </foreach> </update> 但是不好用
pilishou 2013-04-23
  • 打赏
  • 举报
回复
我主要是想知道mybatis是如何来做executeBatch这样的批量更新操作的? 而且我是想拿到所有记录的更新结果。 我还遇到过一个问题就是一次更新数据量大的时候mybaits就挂了,我觉得应该是因为一次批量太多导致sql过长吧。
mynameisdoudou 2013-04-23
  • 打赏
  • 举报
回复
好像在Xml文件里配置事物,如果第一条失败,其他继续执行的

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧