问题

mybatis不支持下划线转java实体类驼峰

2024-12-04  本文已影响0人  musk

spring-boot多数据源导致下划线转不了小驼峰

方法一:直接在mybatisconfig类中配置

@Bean
  public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    ...
    sessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);//下划线转驼峰

    return sessionFactory.getObject();
  }

方法二:通过配置文件配置

1、application.properties中配置

#开启驼峰命名 处理下划线映射到实体
mybatis.configuration.map-underscore-to-camel-case=true

2、如果配置了第一步没有生效,接着配置后面的。在MybatisConfig.java中配置

// 配置一个全局配置方法
  @Bean
  @ConfigurationProperties(prefix = "mybatis.configuration")
  public org.apache.ibatis.session.Configuration globalConfiguration(){
    return new org.apache.ibatis.session.Configuration();
  }

@Bean
  public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    ...

    // 将新对象加入bean
    sessionFactory.setConfiguration(globalConfiguration());

    return sessionFactory.getObject();
  }

附上完整代码

package com.vcom.config;

import javax.sql.DataSource;

import com.alibaba.druid.wall.WallConfig;
import com.alibaba.druid.wall.WallFilter;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

/**
 * Mybatis配置
 */
@Configuration
@MapperScan("com.vcom.**.dao")  // 扫描DAO
public class MybatisConfig {
  @Autowired
  private DataSource dataSource;

  // 配置一个全局配置方法
  @Bean
  @ConfigurationProperties(prefix = "mybatis.configuration")
  public org.apache.ibatis.session.Configuration globalConfiguration(){
    return new org.apache.ibatis.session.Configuration();
  }

  @Bean
  public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource);
    sessionFactory.setTypeAliasesPackage("com.vcom.**.model");  // 扫描Model
    
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    sessionFactory.setMapperLocations(resolver.getResources("classpath*:**/sqlmap/**/*.xml"));  // 扫描映射文件

    // 将新对象加入bean
    sessionFactory.setConfiguration(globalConfiguration());
//    sessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);//下划线转驼峰

    return sessionFactory.getObject();
  }


  @Bean(name = "wallFilter")
  @DependsOn("wallConfig")
  public WallFilter wallFilter(WallConfig wallConfig){
    WallFilter wallFilter = new WallFilter();
    wallFilter.setConfig(wallConfig);
    return wallFilter;
  }

  @Bean(name = "wallConfig")
  public WallConfig wallConfig(){
    WallConfig wallConfig = new WallConfig();
    wallConfig.setMultiStatementAllow(true);//允许一次执行多条语句
    wallConfig.setNoneBaseStatementAllow(true);//允许一次执行多条语句
    return wallConfig;
  }


}

参考:https://zhuanlan.zhihu.com/p/435358346

搜索关键字:

上一篇 下一篇

猜你喜欢

热点阅读