Mybatis 驼峰命名法失效,多数据源开启驼峰命名规则映射
程序员文章站
2022-04-26 23:30:37
...
项目框架:
Spring Boot + Mybatis
问题描述:
做查询操作时,返回数据为NULL,导致当使用这条数据报空指针错误。
说明:
在数据库字段命名规范中,通常使用下划线“_”来连接两个单词,比如:user_id。但是在Java开发中,实体字段通常采用驼峰命名法,比如userId。如果不开启驼峰命名法,则映射到对象无法赋值。
简单粗暴解决办法一:
直接为结果集设定一个resultMap,
例如:
<resultMap id="getUserIdMap" type="com.zjt.blog.entity.BlogCategory">
<id property="userId" column="user_id"/>
</resultMap>
<select id="getPolicyLocalProduct" resultMap="getUserIdMap">
select user_id from table;
</select>
最简单粗暴的方法,不想因为什么原因,直接定义映射关系。
推荐解决办法:
开启驼峰命名法,好处是省代码,查询结果种类多不用都写map,而且不影响定义的resultMap。
开启驼峰命名法的两种方式。
在SpringBoot的application配置文件中进行设置,配置的Demo如下:
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.map-underscore-to-camel-case=true
上面两种选一中写在application即可。
进阶问题:
这篇文章的关节来了,有人说当我配置了驼峰命名法,没有起作用。或者说突然失效。
拓展:
Tips:不一定适用于所有情况。
- 在多数据源的配置文件中定义全局配置。
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration")
public org.apache.ibatis.session.Configuration globalConfiguration(){
return new org.apache.ibatis.session.Configuration();
}
- 修改注入sqlSessionFactory的时候把配置注入进去
@Bean(name = "firstSqlSessionFactory")
@Primary
public SqlSessionFactory firstSqlSessionFactory(@Qualifier("firstDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true); //配置驼峰命名
return bean.getObject();
}
上一篇: [读书笔记] 代码整洁之道(四): 类
下一篇: 有关拉起的文章推荐