为了帮助网友解决“mybatis 中使用foreach 传”相关的问题,中国学网通过互联网对“mybatis 中使用foreach 传”相关的解决方案进行了整理,用户详细问题包括:mybatismapsql

<update id="updateallByEntity" parameterType="java.util.List">
update T_WEEKDAY
<foreach item="item" index="index" collection="list" open="{" separator="," close="}">
<set>
<if test="item.workflag!=null ">
WORKFLAG=#{item.workflag,jdbcType=DECIMAL},
</if>
<if test="item.updateBy!=null ">
UPDATE_BY=#{item.updateBy,jdbcType=VARCHAR},
</if>
<if test="item.updateDate!=null ">
UPDATE_DATE=#{item.updateDate,jdbcType=TIMESTAMP},
</if>
</set>
<where>
<if test="item.weekdayId!=null ">
WEEKDAY_ID=#{item.weekdayId,jdbcType=DECIMAL},
</if>
</where>
</foreach>
</update>

传入的list的值为:
[{updateBy=21, weekdayId=1, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=1}, {updateBy=21, weekdayId=2, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=1}, {updateBy=21, weekdayId=3, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=1}, {updateBy=21, weekdayId=4, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=1}, {updateBy=21, weekdayId=5, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=1}, {updateBy=21, weekdayId=6, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=0}, {updateBy=21, weekdayId=7, updateDate=Thu Mar 26 22:36:44 CST 2015, workflag=1}]

报错:
org.springframework.jdbc.UncategorizedSQLException: 
### Error updating database.  Cause: java.sql.SQLException: 出现不支持的 SQL92 标记: 22: 
### The error may involve com.bsth.si.mapper.WeekdayMapper.updateallByEntity-Inline
### The error occurred while setting parameters
### Cause: java.sql.SQLException: 出现不支持的 SQL92 标记: 22: ,具体解决方案如下:

解决方案1:
    UPDATE_DATE=#{item.updateDate,jdbcType=TIMESTAMP},
你第12代码多个逗号吧,
直接把sql打印出来确认一下哪的错误

解决方案2:
Executing: update T_WEEKDAY SET ( WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? ; WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? ; WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? ; WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? ; WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? ; WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? ; WORKFLAG=?, UPDATE_BY=?, UPDATE_DATE=? WHERE WEEKDAY_ID=? )

现在是报缺失右括号

map如下:

<update id="updateallByEntity" parameterType="list">
update T_WEEKDAY
<set>
<foreach  item="item" index="key" collection="list" open="(" separator=";" close=")">
WORKFLAG=#{item.workflag,jdbcType=DECIMAL},
UPDATE_BY=#{item.updateBy,jdbcType=VARCHAR},
UPDATE_DATE=#{item.updateDate,jdbcType=TIMESTAMP}
WHERE WEEKDAY_ID=#{item.weekdayId,jdbcType=DECIMAL}
</foreach>
</set>
</update>

求解啊,今天搞了一晚上了!

解决方案3:
http://bbs.csdn.net/topics/380234660
受以上贴子中最后一个人的回复,我解决了我,mybatis中使用foreach,批量update多个对象的问题。在此感谢:ypin2003

其实想通了,就很简单了,只要通过foreach直接把需要的多个update用begin end;包起来就可以实现批量更新了
例如:

<update id="updatesql" >
       <foreach collection="list" item="item" open="begin" separator=";" close=";end;">
        UPDATE  A SET colC = #{item.c} 
            WHERE  (colA = #{item.a} ADN colB = #{item.b})
       </foreach>
</update>

“mybatis 中使用foreach 传的更多相关文章

  1. 基于mysql对mybatis中的foreach进行深入研究

    鉴于上一篇博文一次修改mysql字段类型引发的技术探究提到的,要对foreach里面的collection相关的内容做一些介绍,今天就围绕foreach,做一些数据插入和查询相关的研究. 首先介绍一下 ...

  2. mybatis中的foreach条件参数过多时,#和$效率比较

    在客户端查询都小于1秒. 测试: mybatis中in条件12.3万数据$ : 6051 ms# : 27045 ms 1.2万数据$ : 1154 ms# : 24387 ms 5 万数据$ : 2 ...

  3. Mybatis中的foreach

    <delete id="deleteByParam"> DELETE FROM YZ_SECURITIES_CURRENCY WHERE ID IN <forea ...

  4. mybatis中的foreach方法

    select  t.service_id, t.prod_id, t.prod_name, t.prod_type, t.buss_type, t.pricing_fee, t.detail from ...

  5. Mybatis中的in查询和foreach标签

    Mybatis中的foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separato ...

  6. mybatis中foreach使用

    mybatis中的<foreach collection="list" item="item" index="index" open= ...

  7. mybatis 中 foreach 的性能问题及调优

    1.mybatis中最初的sql语句 SELECT 参数1, 参数2, 参数3 FROM 表 WHERE 条件参数1 in <foreach item="item" inde ...

  8. 谈一下思考,关于mybatis中<foreach collection="list">中list得来的原因 没看到官方说明

    <foreach> 是在sql语句中进行多个id查询 时用到的,因为mybatis代替jdbc和hibernate, 使用 在xml文件中编写sql语句,这是一个标签文件.然后在 dao层 ...

  9. mybatis中foreach的用法(转)

    foreach一共有三种类型,分别为List,[](array),Map三种. foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.inf ...

随机推荐

  1. iis 发布静态 html 代码

    参考地址: http://jingyan.baidu.com/article/c843ea0b7d0b7177921e4a68.html 操作步骤:1.在当前发布网站中建立虚拟目录 2.点击当前网站 ...

  2. 【CodeForces 266C】Below the Diagonal(模拟)

    题目每次把空列换到最后一列,把非空行换到最下一行. #include<cstdio> #include<algorithm> #define N 1005 using name ...

  3. iOS开发基础知识碎片

    1:contentSize.contentInset和contentOffset区别 contentSize 是scrollview中的一个属性,它代表scrollview中的可显示区域,假如有一个s ...

  4. High购电商系统开发注意点

    1.引入第三方框架AFnetworking时,记得在xcode项目添加安全属性(自认为). 2.异步加载数据时,如果用数组来装模型,记得对数组进行初始化.对控件的赋值一般在获取数据之后.如果用到Tab ...

  5. K-means之matlab实现

    引入 作为练手,不妨用matlab实现K-means 要解决的问题:n个D维数据进行聚类(无监督),找到合适的簇心. 这里仅考虑最简单的情况,数据维度D=2,预先知道簇心数目K(K=4) 理论步骤 关 ...

  6. 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1817  Solved: 665[Submit][Status] ...

  7. CommonJS/AMD/CMD/UMD概念初探

    1.CommonJS是一种规范,NodeJS是这种规范的实现. 1.1.CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作. 参考: http://www.commonjs.org ...

  8. POJ2456 Aggressive cows

    Aggressive cows 二分,关键是转化为二分! #include <cstdio> #include <algorithm> ; ; int N, C; int a[ ...

  9. 远程连接RabbitMQ失败

    远程连接RabbitMQ失败 为了避免污染宿主系统环境,于是在虚拟机中搭建了一个linux环境并且按照了rabbitmq-server.然后在远程连接的时候一直连接失败. 官网上面给的例子都是在本地使 ...

  10. HDU 1394 Minimum Inversion Number(最小逆序数/暴力 线段树 树状数组 归并排序)

    题目链接: 传送门 Minimum Inversion Number Time Limit: 1000MS     Memory Limit: 32768 K Description The inve ...