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
搜索关键字:
- spring-boot多数据源导致下划线转不了小驼峰
- 解决Spring Boot项目,多数据源情况下mybatis驼峰下划线转换失效
- MyBatis通过配置实现下划线命名法和驼峰命名法之间的自动转换