mybatis提供了一个配置:apache
#开启驼峰命名转换 mybatis.configuration.map-underscore-to-camel-case=true
使用该配置能够让mybatis自动将SQL中查出来的带下划线的字段,转换为驼峰标志,再去匹配类中的属性。segmentfault
即:session
@Select("select phone_num,card_num from xxx where id=#{id}") public User getUserInfo(String id);
查出来的结果,会被自动转换成phonenum和cardnum,再和结果类(这里就是User )中的属性进行匹配。mybatis
更多和自动转换驼峰标志相关的详细源码分析能够参考:传送门app
————————————————————分割线—————————————————源码分析
下面咱们说说我此次碰到的奇怪问题:spa
在个人项目中,明明在application.properties中将这个属性设为了true,结果运行到上文截图57行代码时始终为false,致使后边没法找到匹配的属性。code
通过一番DEBUG分析,发现项目为了作多数据源,将生成blog
org.apache.ibatis.session.SqlSessionFactory
的配置抽出到使用@Configuration修饰的配置类中。underscore
application.properties配置文件中关于驼峰转换的配置内容没有放进去。这些错误的代码我就不在这贴了,直接上改善后的代码:
通过调整以后变成了如下形式:
将application.properties mybatis的congfig加载到类中,再注入到SqlSessionFactoryBean中,问题解决。