Springboot+mybatis戻り値がmapの場合、Key値はアルパカ式に変わります


Springbootプロジェクトで、返される結果セットのフィールド名をアルパカ式に変更する必要がある場合は、コードに次のコードを追加します.
resultType="Map"

MapWrapperFactory.java
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
import org.springframework.stereotype.Component;
import java.util.Map;

@Component
public class MyObjectWrapperFactory implements ObjectWrapperFactory{

    @Override
    public boolean hasWrapperFor(Object object) {
        return object != null && object instanceof Map;
    }
    @Override
    public ObjectWrapper getWrapperFor(MetaObject metaObject, Object object) {
        return new MyWrapper(metaObject,(Map)object);
    }
    
}

MyWrapper.java
import com.google.common.base.CaseFormat;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.wrapper.MapWrapper;

import java.util.Map;

public class MyWrapper extends MapWrapper {

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

    @Override
    public String findProperty(String name, boolean useCamelCaseMapping) {
        if(useCamelCaseMapping){
           return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,name);
        }
        return name;
    }
    
}

mybatisプロファイルに追加
<setting name="mapUnderscoreToCamelCase" value="true"/>  <!--       -->
<objectWrapperFactory type="com.hxps.framework.config.MyObjectWrapperFactory"/>