欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis批量更新报错问题

程序员文章站 2024-03-07 13:43:51
下面给大家介绍mybatis批量更新报错问题, allowmultiqueries=true 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加...

下面给大家介绍mybatis批量更新报错问题,

allowmultiqueries=true

后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybatis批量更新操作如下

<update id="updateorderoverduestatus" parametertype="java.util.list">
  <foreach collection="list" item="item" index="index" open="" close="" separator=";">
   update t_am_bystages_order
   <set>
    overdue_status=#{item.overduestatus}
   </set>
   where order_id=#{item.orderid}
  </foreach>
 </update>

  下面看下mybatis批量更新数据的方式

  第一种方式

<update id="updatebatch" parametertype="map"> 
  update aa set  
   a=#{fptm}, 
   b=#{csoftrain} 
  where c in  
  <foreach collection="cs" index="index" item="item" pen="("separator=","close=")"> 
   #{item} 
  </foreach> 
</update> 

但是这种方式修改的字段值都是一样的。

第二种方式

修改数据库连接配置:&allowmultiqueries=true

比如:jdbc:mysql://192.168.1.236:3306/test?useunicode=true&characterencoding=utf-8&allowmultiqueries=true

<update id="batchupdate" parametertype="java.util.list"> 
   <foreach collection="list" item="item" index="index" open="" close="" separator=";"> 
    update test 
    <set> 
     test=${item.test}+1 
    </set> 
    where id = ${item.id} 
   </foreach> 
 </update> 

这种方式,可以一次执行多条sql语句

参考:

以上所述是小编给大家介绍的详解mybatis批量更新报错,希望对大家有所帮助