package com.chinaztt.mes.common.wrapper;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import lombok.AllArgsConstructor;
|
import org.apache.ibatis.mapping.ResultMap;
|
import org.apache.ibatis.mapping.ResultMapping;
|
import org.apache.ibatis.session.SqlSessionFactory;
|
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Collection;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @Author: zhangxy
|
* @Date: 2020-09-14 10:52
|
*/
|
@Component
|
@AllArgsConstructor
|
public class ResultMapHelper {
|
|
public final static String CACHE_KEY = "COLUMN_FIELD_MAPS";
|
|
private ApplicationContext applicationContext;
|
|
/**
|
* 获取mybatis所有的field-column映射
|
*
|
* @return
|
*/
|
@Cacheable(value = CACHE_KEY)
|
public Map<Class, Map<String, String>> getColumnMaps() {
|
SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) applicationContext.getBean("sqlSessionFactory");
|
Collection<ResultMap> resultMaps = sqlSessionFactory.getConfiguration().getResultMaps();
|
Map<Class, Map<String, String>> map = new HashMap(1000);
|
if (CollectionUtil.isNotEmpty(resultMaps)) {
|
for (Object obj : resultMaps) {
|
if (!(obj instanceof ResultMap)) {
|
continue;
|
}
|
ResultMap resultMap = (ResultMap) obj;
|
Map<String, String> columnFieldMap = new HashMap(50);
|
if (resultMap.getResultMappings() != null) {
|
for (ResultMapping mapping : resultMap.getResultMappings()) {
|
columnFieldMap.put(mapping.getProperty(), mapping.getColumn());
|
}
|
}
|
map.put(resultMap.getType(), columnFieldMap);
|
}
|
}
|
return map;
|
}
|
}
|