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

发布时间:2022-02-19 14:26:35 作者:小新
来源:亿速云 阅读:306

这篇文章主要介绍如何解决mybatis批量更新出现SQL报错问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、问题重现

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.测试

查看控制台错误

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

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

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

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

二、问题分析

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

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

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

如何解决mybatis批量更新出现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报错问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. mybatis中使用foreach出现报错如何解决
  2. 怎么解决SQL中报错ORA-16038问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis sql

上一篇:Python Pygame如何实现水果忍者游戏

下一篇:java分布式基于RestTemplate怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》