解决mybatis批量更新出现SQL报错问题

 更新时间:2022年02月19日 10:44:01   作者:拒绝熬夜啊  
这篇文章主要介绍了mybatis批量更新出现SQL报错,解决办法也很简单只需要在application.properties配置文中的数据源url后面添加一个参数,需要的朋友可以参考下

一、问题重现

1.配置文件

spring:
  #DataSource数据源
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?useSSL=false&amp
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

#MyBatis配置
mybatis:
  type-aliases-package: com.hl.mybatis.pojo #别名定义
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #指定 MyBatis 所用日志的具体实现,未指定时将自动查找
    map-underscore-to-camel-case: true #开启自动驼峰命名规则(camel case)映射
    lazy-loading-enabled: true #开启延时加载开关
    aggressive-lazy-loading: false #将积极加载改为消极加载(即按需加载),默认值就是false
    lazy-load-trigger-methods: "" #阻挡不相干的操作触发,实现懒加载
    cache-enabled: true #打开全局缓存开关(二级环境),默认值就是true

2.sql

@Update({"<script>" +
            "<foreach item='item' collection='list' index='index' open='' close='' separator=';'>" +
            " UPDATE tb_user " +
            "<set>" +
            "<if test='item.userAccount != null'>user_account = #{item.userAccount},</if>" +
            "<if test='item.userPassword != null'>user_password=#{item.userPassword}</if>" +
            "</set>" +
            " WHERE user_id = #{item.userId} " +
            "</foreach>" +
            "</script>"})
    int updateBatch(@Param("list")List<UserInfo> userInfoList);

3.测试

查看控制台错误

在这里插入图片描述

发现这里告诉我有一个语法错误,然后发现user_id,有一个符号。>

这里经过测试更新一条是成功的

在这里插入图片描述

二、问题分析

Mybatis映射文件中的sql语句默认是不支持以" ; " 结尾的,也就是不支持多条sql语句的执行

在这里插入图片描述

但是在SQL编辑器中执行多条sql语句的时候是可以以分号结尾的,如:

在这里插入图片描述

三、解决方法

在application.properties配置文中的数据源url后面添加一个参数

&allowMultiQueries=true【允许sql语句中有多个insert或者update语句 == 支持sql批量操作】

原来的配置文件:

url: jdbc:mysql://127.0.0.1:3306/mybatis_test?useSSL=false&amp

现在的配置文件

url: jdbc:mysql://127.0.0.1:3306/mybatis_test?useSSL=false&amp&&allowMultiQueries=true

再次测试

在这里插入图片描述

到此这篇关于mybatis批量更新出现SQL报错的文章就介绍到这了,更多相关mybatis批量更新出现SQL报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java编程文件遍历之指定遍历的层数详细代码

    Java编程文件遍历之指定遍历的层数详细代码

    这篇文章主要介绍了Java编程文件遍历之指定遍历的层数详细代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Mybatis的update更新批量与普通解决方式对比

    Mybatis的update更新批量与普通解决方式对比

    这篇文章主要为大家介绍了Mybatis的update更新批量与普通解决方式对比,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Mybatis模糊查询之三种定义参数方法和聚合查询、主键回填实现方法

    Mybatis模糊查询之三种定义参数方法和聚合查询、主键回填实现方法

    这篇文章主要介绍了Mybatis模糊查询之三种定义参数方法和聚合查询、主键回填实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • java maven中如何引入自己的lib

    java maven中如何引入自己的lib

    在JavaMaven项目中引入自己的库可以简化为几个步骤:首先,确保库以JAR格式存在或打包成JAR;其次,将JAR文件放置在项目目录或安装到本地Maven仓库;最后,在pom.xml中添加依赖,这样做可以使项目更加模块化,便于管理和维护,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • mybatis @Intercepts的用法解读

    mybatis @Intercepts的用法解读

    这篇文章主要介绍了mybatis @Intercepts的用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 解析和解决org.springframework.beans.factory.NoSuchBeanDefinitionException异常问题

    解析和解决org.springframework.beans.factory.NoSuchBeanDefinitionE

    这篇文章主要介绍了解析和解决org.springframework.beans.factory.NoSuchBeanDefinitionException异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • IDEA中scala生成变量后自动显示变量类型问题

    IDEA中scala生成变量后自动显示变量类型问题

    这篇文章主要介绍了IDEA中scala生成变量后自动显示变量类型问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • springboot实现rabbitmq消息确认的示例代码

    springboot实现rabbitmq消息确认的示例代码

    RabbitMQ的消息确认有两种, 一种是消息发送确认,第二种是消费接收确认,本文主要介绍了springboot实现rabbitmq消息确认的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java设计模式之java原型模式详解

    Java设计模式之java原型模式详解

    这篇文章主要介绍了Java设计模式之原型模式详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-09-09
  • 学习Java多线程之同步

    学习Java多线程之同步

    这篇文章主要为大家详细介绍了Java多线程之同步,感兴趣的小伙伴们可以参考一下
    2016-02-02

最新评论