mybatis批量update时报错multi-statement not allow的问题

 更新时间:2023年10月12日 09:04:01   作者:不会程序的JAVA程序媛  
这篇文章主要介绍了mybatis批量update时报错multi-statement not allow的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

原因

mysql默认不支持批量更新

Druid的multiStatementAllow默认是false

解决方案

方法一

修改application配置

  • spring.datasource.url 后面加上 &allowMultiQueries=true
  • 如果配置了druid 注释掉 filters: wall,加上
  • filter:
  • wall:
  • config:
  • multi-statement-allow: true
  • none-base-statement-allow: true

参考如下

spring:
  #mysql
  datasource:
    url: jdbc:xxx&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowMultiQueries=true
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #druid
    druid:
#      filters: wall
      filter:
        wall:
          config:
            multi-statement-allow: true
            none-base-statement-allow: true

方法二

添加一个DruidConfig类

package com.song.config;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.wall.WallConfig;
import com.alibaba.druid.wall.WallFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
/**
 * @author anatre
 * @date 2020.06.04
 */
@Configuration
public class DruidConfig {
    @Bean
    @ConfigurationProperties (prefix="spring.datasource")
    public DataSource druidPrimary(){
        DruidDataSource druidDataSource = new  DruidDataSource();
        List<Filter> filterList = new ArrayList<> ();
        filterList.add(wallFilter());
        druidDataSource.setProxyFilters(filterList);
        return new DruidDataSource();
    }
    @Bean
    public WallFilter wallFilter(){
        WallFilter wallFilter = new WallFilter();
        wallFilter.setConfig(wallConfig());
        return wallFilter;
    }
    @Bean
    public WallConfig wallConfig() {
        WallConfig config = new WallConfig();
        //允许一次执行多条语句
        config.setMultiStatementAllow(true);
        config.setNoneBaseStatementAllow(true);
        return config;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JPA+Enum枚举实现步骤流程

    JPA+Enum枚举实现步骤流程

    本文介绍了如何在Java中创建学生实体类及Sex枚举类,并通过@JsonValue注解实现枚举序列化,使用JPA的@Converter及AttributeConverter完成枚举与数据库字段的转换,最后通过controller层进行新增与查询测试
    2025-10-10
  • 浅谈 java中ArrayList、Vector、LinkedList的区别联系

    浅谈 java中ArrayList、Vector、LinkedList的区别联系

    ArrayList,Vector底层是由数组实现,LinkedList底层是由双线链表实现,从底层的实现可以得出性能问题ArrayList,Vector插入速度较慢,查询速度较快,而LinkedList插入速度较快,而查询速度较慢。再者由于Vevtor使用了线程安全锁,所以ArrayList的运行效率高于Vector
    2015-11-11
  • Springboot入门案例及部署项目的详细过程

    Springboot入门案例及部署项目的详细过程

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,本文给大家分享一个入门案例使用Springboot1.5.9搭建,具体配置部署过程跟随小编一起看看吧
    2021-07-07
  • Java使用JNA调用DLL文件

    Java使用JNA调用DLL文件

    JNA(Java Native Access)是一个在 Java 中调用本地代码的开源框架,提供了一种简单、高效的方式来访问本地动态链接库,下面我们来看看Java如何使用JNA调用DLL文件吧
    2024-12-12
  • Java中反射的一个简单使用

    Java中反射的一个简单使用

    一直感觉Java的反射机制很强大,JAVA反射技术在平时我们的开发中虽然很少会用到,但在我们所使用的框架源码中是经常会用到的。这篇文中就给大家介绍了关于Java中反射的一个简单使用,有需要的朋友们下面来一起看看吧。
    2016-11-11
  • Java虚拟机性能优化技巧和最佳实践分享

    Java虚拟机性能优化技巧和最佳实践分享

    Java虚拟机(JVM)是Java平台的核心组件,负责将Java字节码转换为机器码并执行,JVM性能直接影响Java应用的响应速度、吞吐量和资源利用率,本文将深入探讨JVM性能优化的关键技术和最佳实践,帮助开发者和运维人员提升Java应用性能,需要的朋友可以参考下
    2025-05-05
  • Mybatis Update操作返回值问题

    Mybatis Update操作返回值问题

    在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数,下面通过本文给大家分享Mybatis Update操作返回值问题,需要的朋友参考下吧
    2017-09-09
  • SpringBoot通过yml和xml文件配置日志输出方法

    SpringBoot通过yml和xml文件配置日志输出方法

    这篇文章主要介绍了SpringBoot通过yml和xml文件配置日志输出方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • SpringBoot中使用HTTP客户端工具Retrofit

    SpringBoot中使用HTTP客户端工具Retrofit

    这篇文章主要为大家介绍了SpringBoot中使用HTTP客户端工具Retrofit方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Java中将List拆分为多个小list集合的实现代码

    Java中将List拆分为多个小list集合的实现代码

    这篇文章主要介绍了Java中如何将List拆分为多个小list集合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论