淘先锋技术网

首页 1 2 3 4 5 6 7

由控制台可见,其mybatis默认不支持多条语句的更新,需要设置相关属性。从社区里看到的解决方案大致思路为,先检查本地配置文件的url中是否配置了allowMultiQueries=true,如果配置了,但还是不起作用,再写一个配置类来解决。


查看本地的application.yml文件中的
   

  url: jdbc:mysql://127.0.0.1:3306/demo?allowMultiQueries=true


没有加的记得加上 allowMultiQueries=true

这个时候大多数情况下基本是可以解决问题了的,如果还是报错的话 就直接在配置文件中添加配置

在配置类MyBatisPlusConfig中 (mybatis 的话就在MyBatisConfig中改,没有配置文件的话就加一个)添加如下配置就可以了

@Configuration
public class MyBatisPlusConfig{
 
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource(){
        List<Filter> filterList = null;
        DruidDataSource druidDataSource = new DruidDataSource();
        List<Filter> proxyFilters = druidDataSource.getProxyFilters();
        boolean isExit = false;
        for(Filter filter:proxyFilters){
            if(filter instanceof  WallFilter){
                ((WallFilter) filter).setConfig(wallConfig());
                isExit = true;
            }
        }
        if(!isExit){
            filterList= new ArrayList<>();
            filterList.add(wallFilter());
            druidDataSource.setProxyFilters(filterList);
        }
        return druidDataSource;
 
    }
 
    @Bean
    public WallFilter wallFilter(){
        WallFilter wallFilter = new WallFilter();
        wallFilter.setDbType(DbType.MYSQL.getDb());
        wallFilter.setConfig(wallConfig());
        return wallFilter;
 
    }
 
    @Bean
    public WallConfig wallConfig(){
        WallConfig config = new WallConfig();
        config.setMultiStatementAllow(true);//允许一次执行多条语句
        config.setNoneBaseStatementAllow(true); //允许非基本语句的其他语句
        return config;
    }
 
}

这个时候请重启项目就可以了