Mybatis 驼峰与下划线映射
目前的项目中遇到一个坑,记录一下:
问题描述:
在 application.properties配置文件中,设置 mybatis.configuration.map-underscore-to-camel-case=true 开启驼峰与下划线转换,idea 提示是设置成功的,但调试发现没有生效。
问题排查:
在 org.apache.ibatis.session.Configuration 的 setMapUnderscoreToCamelCase 方法中增加断点,进行 debug,发现能够正确配置
说明 Configuration 是正确生成的,只是没有正确生效。
所以怀疑有其他的 Configuration 生成,而这个 Configuration 没有加载 mapUnderscoreToCamelCase
于是,在 Configuration 的构造方法上增加断点,然后通过虚拟机方法栈成功找到问题代码
原来代码中新注册了一个 SqlSessionFactoryBean,并且用 @Primary 优先注入
由于 SqlSessionFactoryBean 是直接通过 new 方法生成的,所以 Configuration 也是直接用 new方法生成,无法获得相应配置。
解决方法:
直接用代码直接显式设置Configuration