springboot中处理mybatis-plus返回Map时key值转换为小写

  • Post author:
  • Post category:其他


各个论坛都翻了一遍,发现处理方式都大同小异,但是在引入他们的处理方式时发现不起作用,查看了源码之后发现问题

前面的处理都和其他的差不多


1.首先自定义MapWrapper

public class MapKeyLowerWrapper extends MapWrapper {

    public MapKeyLowerWrapper(MetaObject metaObject, Map<String, Object> map) {
        super(metaObject, map);
    }

    @Override
    public String findProperty(String name, boolean useCamelCaseMapping) {
        return name==null?"":name.toLowerCase() ;
    }
}


2.自定义ObjectWrapperFactory

public class MapWrapperFactory implements ObjectWrapperFactory {
    @Override
    public boolean hasWrapperFor(Object o) {
        return o != null && o instanceof Map;
    }

    @Override
    public ObjectWrapper getWrapperFor(MetaObject metaObject, Object o) {
        return new MapKeyLowerWrapper(metaObject, (Map) o);
    }
}


3.引入配置

这一步我采取的是新建config类来引入

查看了很多文章,他们customize方法传入参数用的是org.apache.ibatis.session.Configuration,实际上这个是不生效的。

自己试了很多次才发现应该引入com.baomidou.mybatisplus.core.MybatisConfiguration

@Configuration
public class MybatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer(){
        return new ConfigurationCustomizer() {
            @Override
            public void customize(MybatisConfiguration configuration) {
                configuration.setObjectWrapperFactory(new MapWrapperFactory());
            }
        };
    }

}



版权声明:本文为qq56505541原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。