`
king123654789
  • 浏览: 289181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MyBatis Batch Update Exception 使用foreach 批量update 出错

 
阅读更多
源地址   http://quabr.com/22829539/mybatis-batch-update-exception

使用如下Mybatis  map xml文件

<update id="updateTestcaseNodeBatch" parameterType="List"> 
  <foreach collection="list" item="nodeVO" separator=";"> 
    UPDATE testcase_node 
     <set> 
       name=#{nodeVO.name}, 
       version=#{nodeVO.version}, 
       description=#{nodeVO.description}, 
       last_modify_user=#{nodeVO.createUser}, 
       last_modify_time=#{nodeVO.createTime} 
     </set> 
     <where> 
       object_id=#{nodeVO.objectId} AND root_id=#{nodeVO.rootId} 
     </where> 
  </foreach> 
</update> 

出错信息:
### The error may involve com.hirain.testmanagement.mapper.TestcaseNodeMapper.updateTestcaseNodeBatch-Inline
### The error occurred while setting parameters
### SQL: UPDATE testcase_node       SET name=?,        version=?,        description=?,        last_modify_user=?,        last_modify_time=?        WHERE object_id=? AND root_id=?     ;      UPDATE testcase_node       SET name=?,        version=?,        description=?,        last_modify_user=?,        last_modify_time=?        WHERE object_id=? AND root_id=?
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
    UPDATE testcase_node
      SET name='Türstatus',
       version=4,
     ' at line 8
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
    UPDATE testcase_node
      SET name='Türstatus',
       version=4,
     ' at line 8
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:233)


仔细检查 map文件 和数据库表字段没有错误

最终结果是因为 配置的 mysql jdbc 链接字符串 默认不支持一次性执行多个sql 语句;

但是在我们的 update map中需要执行多个 update语句。

最后加上参数 "allowMultiQueries" 设置为true  如下:

<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true" /> 


问题解决!
分享到:
评论

相关推荐

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...

    mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    在MyBatis中,批量更新(batch update)是一种提高数据库操作效率的重要手段,尤其是在处理大量数据更新时。这里我们将详细探讨如何在Oracle和MySQL数据库中使用MyBatis进行批量更新。 1. **Oracle数据库的批量更新...

    Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)

    Mybatis Plus 提供了 `batchInsert()` 和 `batchUpdate()` 方法来实现批量插入和更新。这些方法接受一个实体对象列表,然后一次性将所有对象插入或更新到数据库。然而,当涉及到唯一索引时,简单的批量操作可能无法...

    使用MyBatis 动态update数据

    在`&lt;update&gt;`标签内部,我们看到`&lt;trim&gt;`、`&lt;if&gt;`等标签的使用,这些都是MyBatis的动态SQL标签。`&lt;trim&gt;`标签主要用于去除SQL字符串中的特定字符,比如这里`prefix="set"`表示在每个字段前添加`set`关键字,而`...

    MyBatis批量插入Update

    MyBatis批量插入Update MyBatis批量插入是一种高效的数据插入方式,通过将多条数据一次性插入数据库,可以大大提高插入速度。在实际测试中,使用MyBatis批量插入可以达到至少快一倍的执行效率。 MyBatis批量插入的...

    mybatis foreach批量插入数据:Oracle与MySQL区别介绍

    但是,在不同的数据库管理系统中,foreach标签的使用有一些区别,今天我们主要介绍MyBatis foreach批量插入数据在Oracle和MySQL中的区别。 首先,让我们先了解一下foreach标签的基本使用方法。foreach标签是MyBatis...

    基于SpringBoot、JDBC、Mybatis和EasyExcel的Java Excel批量导入导出设计源码

    该项目是一款基于SpringBoot、JDBC、Mybatis和EasyExcel的Java Excel批量导入导出解决方案源码,包含22个文件,其中包括10个Java源文件、2个Markdown文件、2个XML文件、1个Git忽略文件、1个JAR包文件、1个属性文件、...

    Mybatis中使用updateBatch进行批量更新

    在Mybatis中,可以使用 `&lt;foreach&gt;` 语法来拼凑批量更新的SQL语句。下面是一个示例代码: ```xml &lt;update id="updateBatch" parameterType="java.util.List"&gt; update mydata_table set &lt;foreach collection=...

    基于mybatis batch实现批量提交大量数据

    MyBatis批量提交大量数据是一种高效的数据批量操作方式,通过MyBatis的BATCH方式执行增删改方法,可以实现在短时间内处理大量数据。下面对MyBatis批量提交大量数据的实现进行了详细的介绍。 MyBatis批量提交的优点 ...

    MyBatis通过BATCH批量提交的方法

    下面通过一个具体的例子来展示如何使用MyBatis的BATCH模式来批量更新数据: ```java // 获取SqlSessionFactory实例 SqlSessionFactory sqlSessionFactory = ...; // 开启BATCH模式的SqlSession try (SqlSession ...

    Oracle+Mybatis的foreach insert批量插入报错的快速解决办法

    在Oracle数据库中使用MyBatis的`&lt;foreach&gt;`标签进行批量插入时,可能会遇到“SQL命令未正确结束”的错误。这个问题通常由于Oracle数据库对批量插入语句的语法要求与MySQL等其他数据库系统不同所导致。以下是对这个...

    Mybatis Update操作返回值问题

    首先,当我们使用 Mybatis 的 update 语句执行更新操作时,返回的整数值实际上是数据库驱动提供的信息,而不是 Mybatis 自身计算的结果。对于大多数数据库系统,如 MySQL,这个返回值通常表示“匹配”的行数,即满足...

    mybatis数据操作(增删改查+批量操作)

    在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...

    SpringMVC + Mybatis 增删改查(批量删除)

    本教程将详细介绍如何使用SpringMVC和Mybatis来实现基本的增删改查(CRUD)功能,包括批量删除。 **SpringMVC** 是Spring框架的一部分,它是一个轻量级的MVC(Model-View-Controller)框架,提供了处理HTTP请求、...

    mybatis plus 5种批量操作性能测试

    4. **使用 SQL 批量插入(SQL Batch Insert)** MyBatis Plus 支持自定义 SQL,可以通过 `executeBatch()` 执行批量 SQL 语句,如 `INSERT INTO table (column1, column2) VALUES (?, ?), (?, ?), ...` 这种形式,...

    Mybatis实现多表联合查询和批量插入

    本文将详细介绍如何使用Mybatis实现多表联合查询和批量插入。 一、多表联合查询 在实际开发中,经常需要对多个表进行联合查询,例如,查询员工信息同时需要关联部门信息和职位信息。Mybatis提供了强大的联合查询...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    本篇将深入探讨如何在Spring Boot项目中整合Mybatis,实现对SQL Server数据库的跨库批量插入操作。 首先,我们需要在Spring Boot项目中引入相关的依赖。对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot ...

    测试mybatis里foreach用法

    总的来说,MyBatis的`&lt;foreach&gt;`标签是处理动态SQL和集合数据的关键工具,它可以优雅地解决批量操作、条件查询等问题,让SQL语句的编写更加灵活和高效。正确理解和熟练运用`&lt;foreach&gt;`,能显著提升MyBatis的开发效率...

    MyBatis防止批量更新1

    MyBatis 插件机制防止批量更新 MyBatis 是一个流行的持久层框架,它提供了插件机制来拦截 SQL 操作,以便于开发者可以在执行 SQL 语句前进行预处理或后续处理。本文将详细介绍 MyBatis 插件机制的实现原理和应用...

    springbatch mybatis 代码

    Spring Batch 是一个用于处理批量数据的强大框架,而MyBatis 是一个灵活的持久层框架,它简化了数据库操作。下面将详细探讨这两个技术以及它们的结合使用。 **Spring Batch** Spring Batch 提供了全面的批量处理...

Global site tag (gtag.js) - Google Analytics