Mybatis批量更新出现BadSqlGrammarException异常解决-阿里云开发者社区

开发者社区> 一直在追逐> 正文

Mybatis批量更新出现BadSqlGrammarException异常解决

简介: 解决mybatis批量更新出现异常解决方案
+关注继续查看

1.xml写法 批量更新sql如下

   <update id="updateDemo">
        <foreach collection="demos" item="demo" open="" separator=";" close="" index="index">
            update demo
            <set>
                <if test="null != demo.name">name = #{demo.name},</if>
                <if test="null != demo.age">age= #{demo.age}</if>
            </set>
            <where>id=#{demo.id} </where>
        </foreach>
    </update>

2.执行出现异常

  JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1500edf3] will be managed by Spring
==>  Preparing: update demo SET name = ?, age= ? WHERE id=? ; update demo SET name = ?, age= ? WHERE id=? 
==> Parameters: 2(Integer), 2(Integer), 1(Integer), 3(Integer), 3(Integer), 2(Integer)
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@11d474a]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@11d474a]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@11d474a]
org.springframework.jdbc.BadSqlGrammarException: 
### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: 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 demo
             SET name = 3,
                age' at line 8
### The error may exist in file [D:\Demo-server\target\classes\mapper\DemoMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: update demo              SET name = ?,                 age= ?               WHERE id=?                               ;              update demo              SET name = ?,                 age= ?               WHERE id=?
### Cause: java.sql.SQLSyntaxErrorException: 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 app_user
             SET name = 3,
                age' at line 8
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: 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 demo
             SET name = 3,
                age' at line 8

3.配置连接数据库的url中后缀中添加以下参数

allowMultiQueries=true //开启批量更新

4.配置结果

jdbc:mysql://xxx:3306/xxx?useSSL=false&characterEncoding=utf8&allowMultiQueries=true

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android Exception(全局异常)
Android 中全局未捕获的异常获取,首先继承UncaughtExceptionHandler,并实现其uncaughtException(Thread thread, Throwable throwable)方法,在此方法中可以打印出具体的错误。
658 0
解决.Net 4.0 A potentially dangerous Request.Form value was detected from the client 异常
解决ASP.NET 4.0   "A potentially dangerous Request.Form value was detected from the client". 错误在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值。
789 0
iOS中动态更新补丁策略JSPatch运用基础二
iOS中动态更新补丁策略JSPatch运用基础二
6 0
iOS中动态更新补丁策略JSPatch运用基础一
iOS中动态更新补丁策略JSPatch运用基础一
8 0
使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常
使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常 问题描述 在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下:org.
1645 0
Mybatis的Executor介绍(二)——批处理,批量更新
6       Mybatis的Executor介绍(二)——批处理        在程序中,有时候我们需要批量的去操作一些数据,批量的新增、修改、删除,如果是通过for循环一条记录一条记录的去更新无疑效率会比较慢。
1392 0
+关注
一直在追逐
技术在不断的实践中,进行创新
24
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载