mybatis批量更新

问题描述

大家好,请教个问题<updateid="updatesql">UPDATEASETcolC='CCCCCC'<foreachcollection="list"item="item"index="index"separator="OR">WHERE(colA=#{item.a}ADNcolB=#{item.b})</foreach></update>批量更新的时候,怎么能实现把SETcolC='CCCCCC'.其中的colC值是动态从foreach的对象item取出来的?

解决方案

解决方案二:
我是进来说楼主头像好靓的。顺便问下楼主是不是要这种:<updateid="updatesql"><foreachcollection="list"item="item"index="index"separator="OR">UPDATEASETcolC=#{item.c}WHERE(colA=#{item.a}ADNcolB=#{item.b})</foreach></update>
解决方案三:
童鞋,你这条语句在list的size为1的时候,是OK的.当list记录条数大于1的时候,组装SQL为UPDATEASETcolC=#{item.c}WHERE(colA=#{item.a}ADNcolB=#{item.b})orUPDATEASETcolC=#{item.c}WHERE(colA=#{item.a}ADNcolB=#{item.b})这条语句压根就是标准sql,oracle的语法也不支持,所以这种方法不能够实现.
解决方案四:
那你那样一条语句里多个where关键字也不行啊。主要是没理解到你要做什么。
解决方案五:
楼主头像是本人么?帮顶了。
解决方案六:
我也是来看楼主的头像的呵呵,你那种用法我都还没有用过……惭愧啊
解决方案七:
同样求教!!!。。。。。。
解决方案八:
可以这样子:<updateid="updateOrders"parameterType="java.util.List">updateorderssetstate='0'wherenoin<foreachcollection="list"item="nos"open="("separator=","close=")">#{nos}</foreach></update>
解决方案九:
可以这样的<updateid="updateOrders"parameterType="java.util.List">updateorderssetstate='0'wherenoin<foreachcollection="list"item="nos"open="("separator=","close=")">#{nos}</foreach></update>
解决方案十:
楼主:我劝你还是在Java里面做循环吧,SqlMap里只写一条记录比较好!大家好,请教个问题<updateid="updatesql"parameterType=“item的类型”>UPDATEASETcolC=#{item.c}WHERE(colA=#{item.a}ADNcolB=#{item.b})</update>Java里循环List调用上面的SQL文
解决方案十一:
主要就是为了减少和数据库多次交互
解决方案十二:
解决了没有
解决方案十三:
我也在想这个问题啊……楼主解决了没,分享一下
解决方案十四:
把where提到循环外面嘛
解决方案十五:
觉得你这样的需求就是不合理的。foreach是迭代拼装语句,而colC='CCCCCC',在一个update中只能set一次,何来迭代的用法。还有就是WHERE放foreach里,应该是不合理的吧!
解决方案:
我刚刚解决。http://blog.csdn.net/cyd1919/article/details/8088402
解决方案:
不知道楼主现在解决没。。。我现在也碰到这样的问题。。。如果解决分享一下哈。在网上看见有mysql的,但是oracle的好像还没看见
解决方案:
这段代码是针对MySQL进行处理的批量更新,仅供参考<insertid="save"parameterType="java.util.List"><![CDATA[INSERTINTOdashboard_module_r(code,dashboard_code,module_code,relative_position,layout_position)VALUES]]><foreachcollection="list"item="item"index="index"separator=",">(#{item.code,jdbcType=VARCHAR},#{item.dashboardCode,jdbcType=VARCHAR},#{item.moduleCode,jdbcType=VARCHAR},#{item.relativePosition,jdbcType=VARCHAR},#{item.layoutPosition,jdbcType=VARCHAR})</foreach>ONDUPLICATEKEYUPDATEcode=VALUES(code),dashboard_code=VALUES(dashboard_code),module_code=VALUES(module_code),relative_position=VALUES(relative_position),layout_position=VALUES(layout_position)</insert>

解决方案:
@cyd1919,这个也不能解决的办法,批量更新多个对象(楼主的问题)。
解决方案:
我来插个嘴,一个很恶心的写法,但好歹是一条sql不是有个foreach么,我虽然不能有多个where,但是,我可以使用foreach来迭代出where后面的条件拼出来就像这样:where(xx='1'andyy='2')or(xx='4'andyy='6')
解决方案:
lz,问题处理了没有?我现在也碰到这样的问题,我是打算把传递List数据foreach也一个表数据,然后跟我要修改的表关联。
解决方案:
求解,,mybatis批量修改
解决方案:
其实想通了,就很简单了,只要通过foreach直接把需要的多个update用beginend;包起来就可以实现批量更新了例如:<updateid="updatesql"><foreachcollection="list"item="item"open="begin"separator=";"close="end;">UPDATEASETcolC=#{item.c}WHERE(colA=#{item.a}ADNcolB=#{item.b})</foreach></update>
解决方案:
上面例子中close=“end;”修改为close=";end;"

时间: 2024-10-26 19:27:31

mybatis批量更新的相关文章

Java实现mybatis批量插入数据到Oracle_java

最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式:  结合网上资料,写了个小demo,文章末尾附上demo下载地址  1.新建项目:项目目录结构如下图所示,添加相应的jar包 2.新建数据库表:ACCOUNT_INFO CREATE TABLE ACCOUNT_INFO ( "ID" NUMBER(12) NOT NULL , "USERNAME" VARCHAR2(64 BYTE) NULL , &

MyBatis批量新增和更新

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 之前有开发任务一个接口里面有大量的数据新增和更新操作,导致十分缓慢.使用了批量操作之后速度有明显提升,几乎百倍千倍的速度提升. 博主之前统计过,通过普通接口一次数据库插入大概需要200ms,对于大量新增或更新操作的情况,数据库批量操作是十分有必要的.废话不多说,直接上代码. 博主的resultMap如下: <resultMap id="BaseResultMap&qu

DreamweaverMX实现网站批量更新

dreamweaver 在Dreamweaver 4.0中,我们就已接触了模板与库的概念,知道它们是批量生成风格类似的网页的好工具.如今在Dreamweaver MX(以下简称DW MX)中,模板与库的功能得到了进一步细化与加强,尤其是实现关联网页自动更新的特点,使得模板与库成为DW MX的一大亮色. 1.首先我们来看看模板的应用,与Dreamweaver 4.0不同的是,DW MX把模板的操作拓展到了"Modify"与"Insert"两个菜单下.同时,在 &quo

使用 DataAdapter 执行批量更新

执行    摘自MSDN: 在以前版本的 ADO.NET 中,使用 DataSet 中的更改来更新数据库时,DataAdapter 的 Update 方法每次更新数据库的一行.因为该方法循环访问指定 DataTable 中的行,所以,会检查每个 DataRow,确定是否已修改.如果该行已修改,将根据该行的 RowState 属性值调用相应的 UpdateCommand.InsertCommand 或 DeleteCommand.每一次行更新都涉及网络与数据库之间的双向数据传输. 在 ADO.NE

用Dreamweaver MX实现网站批量更新

dreamweaver     在Dreamweaver 4.0中,我们就已接触了模板与库的概念,知道它们是批量生成风格类似的网页的好工具.如今在Dreamweaver MX(以下简称DW MX)中,模板与库的功能得到了进一步细化与加强,尤其是实现关联网页自动更新的特点,使得模板与库成为DW MX的一大亮色.     1.首先我们来看看模板的应用,与Dreamweaver 4.0不同的是,DW MX把模板的操作拓展到了"Modify"与"Insert"两个菜单下.同

批量更新数据

数据 最近做一项目,遇到了批量更新数据,代码 如下: 一个update的例子:<%@ Page language="C#" Debug="true" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %> <script runat="server"

Filter与updatebatch混合使用实现批量更新

/*******部分代码*******//*******idArr()和codeArr()为两个数组,其中,idArr()为filter数据过滤条件,codeArr()作为更新数据**********/....... dim CRs,sql,FStrsql="" conn.begintransset CRs=server.CreateObject("adodb.recordset")CRs.ActiveConnection=connCRs.CursorType=1C

Filter与updatebatch混合使用实现批量更新(原创)

原创 /*******部分代码*******//*******idArr()和codeArr()为两个数组,其中,idArr()为filter数据过滤条件,codeArr()作为更新数据**********/.......   dim CRs,sql,FStr  sql=""    conn.begintrans  set CRs=server.CreateObject("adodb.recordset")  CRs.ActiveConnection=conn  C

ORACLE中如何批量更新关联表

在SQL SERVER中,关联表的批量更新,可以参看这里: http://www.cnblogs.com/downmoon/archive/2007/12/29/1019832.html Oracle下没找到好的语法,临时用这个: update employee set hrdeptname= (select d.DEPTNAME from DEPARTMENT d where ROWNUM=1 and d.deptID=employee.hrdeptID ) 对应的SQL Server语法: