SpringBoot使用MyBatis做数据库查询时驼峰转换问题

1、问题描述

SpringBoot使用MyBatis做数据库查询,当resultType="java.util.Map"时,查询结果数据库字段名并没有进行驼峰转换。检查MyBatis配置文件,驼峰转换时开启的。为什么不生效呢?


2、解决办法

经过一番百度,原来是因为MyBatis配置仅作用于javabean的field的,对于map并不会做转换。那么我们可以通过自定义MyBatis的MapWrapper来实现map类型的驼峰转换

1、增加pom依赖

<dependency>

<groupId>com.google.guava</groupId>

<artifactId>guava</artifactId>

<version>28.1-jre</version>

</dependency>


2、自定义MapWrapper

public class MspMapWrapper extends MapWrapper{

public MspMapWrapper(MetaObject metaObject, Map<String, Object> map) {

super(metaObject, map);

}

@Override

public String findProperty(String name, boolean useCamelCaseMapping) {

if(useCamelCaseMapping){

            //引用的谷歌的 guava库,里面有CaseFormat是转换驼峰的,pom添加对应依赖即可

return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,name);

}

return name;

}

}

3、替换MyBatis默认的map包装方法

@Configuration

public class MybatisConfig {

@Bean

public ConfigurationCustomizer mybatisConfigurationCustomizer(){

return new ConfigurationCustomizer() {

@Override

public void customize(org.apache.ibatis.session.Configuration configuration) {

configuration.setObjectWrapperFactory(new MapWrapperFactory());

}

};

}

}

转自:https://my.oschina.net/u/2278977/blog/1795969

补充!!!

改完一测试,发现不行,又经过一通乱试,原来我的MyBatis是通过mybatis-config.xml配置文件配置的。去除上面第三部的方法,改用在配置文件中增加配置搞定

<objectWrapperFactory type="com.summer.msp.core.wrapper.MapWrapperFactory"/>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容