springboot+mybatis+oracle 下划线字段对应的驼峰字段没有值问题。

     刚搭建了springboot+mybatis+oracle项目,然后反向工程了实体,demo查询了一下,log能打出SQL,而且能正常返回实体内容。

     当时就是 ! 居然这么顺。。。。。么?   并没有,刚开始对接接口的时候,就是部分字段没有值,我擦的,我用日志打印的SQL执行了一下,尼玛没毛病啊。然后跟一下实体吧,我擦为毛部分字段有值,部分是NULL,然后就是薅头发阶段。

       然后观察了几个字段,驼峰的都没有值,其他值都正常获取。也就是说问题出在mybatis配置上了,下划线字段跟驼峰映射不支持。之前还特意看了一眼 baseResultMap 列名对应property,没毛病啊,反向工程也不会出这个错的。然后就百度看看驼峰那的相关配置。

上代码:

application.properties   (yml 自己调整格式)

#驼峰
mybatis.configuration.map-underscore-to-camel-case=true

DataSourceConfig:

          配置方法:globalConfiguration();

         然后在 SqlSessionFactory 加载上面的配置信息。

package com.demo.config;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

@Configuration
//指定扫描的mapper接口所在的包
@MapperScan(basePackages = "com.demo.mapper", sqlSessionFactoryRef = "DBDataSqlSessionFactory")
public class DataSourceConfig {
	@Bean(name = "DBDataSource")	
	@ConfigurationProperties(prefix="spring.datasource") //告诉自动加载配置的属性
	public DataSource dataSource() {
		return DataSourceBuilder.create().build();
	}

	@Bean
	@ConfigurationProperties(prefix="mybatis.configuration")
	/**
	 * 增加此部分 获取配置文件中的mybatis配置信息
	 */
	public org.apache.ibatis.session.Configuration globalConfiguration(){
		return new org.apache.ibatis.session.Configuration();
	}

	@Bean(name = "DBDataSqlSessionFactory")
	public SqlSessionFactory  sqlSessionFactory(@Qualifier("DBDataSource") DataSource dataSource,org.apache.ibatis.session.Configuration config)
			throws Exception {
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		bean.setDataSource(dataSource);
		/**加载application 驼峰配置*/
		bean.setConfiguration(config);
		bean.setMapperLocations(
				new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/*.xml"));

		return bean.getObject();
	}

	@Bean(name = "DBDataTransactionManager")
	public DataSourceTransactionManager transactionManager(@Qualifier("DBDataSource") DataSource dataSource) {
		return new DataSourceTransactionManager(dataSource);
	}

	@Bean(name = "DBDataSqlSessionTemplate")
	public SqlSessionTemplate sqlSessionTemplate(
			@Qualifier("DBDataSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
		return new SqlSessionTemplate(sqlSessionFactory);
	}
}

搞定。

猜你喜欢

转载自blog.csdn.net/a290450134/article/details/82898281
今日推荐