package com.code2roc.fastface.db; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.code2roc.fastface.util.ScanUtil; import com.code2roc.fastface.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Component public class MapperBeanManage { @Autowired private ApplicationContext applicationContext; private HashMap mapperDic; public MapperBeanManage() { mapperDic = new HashMap<>(); } public void initMapperBean(List runtimeClassList) { List filterClassList = new ArrayList<>(); filterClassList.add(BaseModel.class); List> dataBaseClassList = new ArrayList<>(); for (Class clazz:runtimeClassList) { dataBaseClassList.addAll(ScanUtil.getAllClassByPackageName(clazz.getPackage(), filterClassList)); } Map res = applicationContext.getBeansOfType(BaseMapper.class); for (Class clazz : dataBaseClassList) { String tableNameValue = StringUtil.replaceLast(clazz.getSimpleName().toLowerCase(),"do",""); for (Map.Entry en : res.entrySet()) { String mapperTableNameValue = StringUtil.replaceLast(en.getKey().toString().toLowerCase(),"dao",""); if (tableNameValue.equals(mapperTableNameValue)) { BaseMapper mapper = (BaseMapper) en.getValue(); mapperDic.put(tableNameValue, mapper); break; } } } System.out.println("扫描并初始化mapperBean对象成功,mapper数量:" + mapperDic.keySet().size() + "个"); } public BaseMapper getMapper(String tableName) { return mapperDic.get(tableName); } }