mybatis怎么把下划线字段转为驼峰变量

一.使用方法

1.xml配置方法,mybatis-config.xml的配置如下

当然前题是先要加载这个配置文件,如用spring xml是这么加载 2.springboot的application.properties的配置方法

#开启驼峰命名转换

mybatis.configuration.map-underscore-to-camel-case=true

如果是多数据源,要在配置sessionFactory时配置一下,代码如下:

@Bean
@ConfigurationProperties(prefix=“mybatis.configuration”)
public org.apache.ibatis.session.Configuration mybatisConfig() {
return new org.apache.ibatis.session.Configuration();
}
@Bean
public SqlSessionFactory sqlSessionFactory(org.apache.ibatis.session.Configuration config) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dynamicDataSource());
//此处设置为了解决找不到mapper文件的问题
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(“classpath:mapper/**/*.xml”));
sqlSessionFactoryBean.setConfiguration(config);
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(org.apache.ibatis.session.Configuration config) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory(config));
}

二、源码分析

先看一下转化的调用堆栈:

代码如下(org.apache.ibatis.reflection.MetaClass):

上面代码只是去掉了下划线,并没有首字母小写变大写的代码。再跟进findProperty方法可以找到获取驼峰结果的代码如下:

可以看出通过reflector.findPropertyName方法把去掉下划线的变量转成了驼峰的变量。再跟过去看到这样的代码:

那么caseInsensitivePropertyMap这个集合又是什么时候初始化的呢?原来是系统启动时,spring加载上下文的时候:

而它的key其实是实体类的set与get方法后面的字符(org.apache.ibatis.reflection.Reflector.addGetMethods,org.apache.ibatis.reflection.property.PropertyNamer.methodToProperty),而这个方法一般都是标准的驼峰格式。所以当get(大写字段)名时,可以得到标准的驼峰字段名。

再把整个流程整理一下:

所以其实不是转换下划线,而是去掉下划线,再取驼峰的变量。不过最后的效果与转换的一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值