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> getColumnMaps() { SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) applicationContext.getBean("sqlSessionFactory"); Collection resultMaps = sqlSessionFactory.getConfiguration().getResultMaps(); Map> map = new HashMap(1000); if (CollectionUtil.isNotEmpty(resultMaps)) { for (Object obj : resultMaps) { if (!(obj instanceof ResultMap)) { continue; } ResultMap resultMap = (ResultMap) obj; Map 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; } }