001package cn.mybatis.mp.generator.database.meta; 002 003import cn.mybatis.mp.generator.config.GeneratorConfig; 004import cn.mybatis.mp.generator.util.GeneratorUtil; 005import lombok.Getter; 006import lombok.ToString; 007 008import java.util.ArrayList; 009import java.util.List; 010import java.util.stream.Collectors; 011 012@Getter 013@ToString 014public class EntityInfo { 015 016 public final String serviceName; 017 public final String servicePackage; 018 public final String serviceImplName; 019 public final String serviceImplPackage; 020 public final String actionName; 021 public final String actionPackage; 022 private final TableInfo tableInfo; 023 private final String name; 024 private final String remarks; 025 private final EntityFieldInfo idFieldInfo; 026 private final List<EntityFieldInfo> fieldInfoList; 027 private final List<EntityFieldInfo> excludeFieldInfoList; 028 private final String entityPackage; 029 private final String mapperName; 030 private final String mapperPackage; 031 private final String daoName; 032 private final String daoPackage; 033 private final String daoImplName; 034 private final String daoImplPackage; 035 private boolean hasIgnoreTablePrefix = false; 036 037 public EntityInfo(GeneratorConfig generatorConfig, TableInfo tableInfo) { 038 String tmpTableName = tableInfo.getName(); 039 for (String prefix : generatorConfig.getTableConfig().getTablePrefixs()) { 040 if (tmpTableName.startsWith(prefix)) { 041 tmpTableName = tmpTableName.replaceFirst(prefix, ""); 042 hasIgnoreTablePrefix = true; 043 break; 044 } 045 } 046 047 048 this.name = GeneratorUtil.getEntityName(generatorConfig, tmpTableName); 049 this.remarks = tableInfo.getRemarks(); 050 this.tableInfo = tableInfo; 051 if (tableInfo.getIdColumnInfo() != null) { 052 this.idFieldInfo = new EntityFieldInfo(generatorConfig, this, tableInfo.getIdColumnInfo()); 053 } else { 054 this.idFieldInfo = null; 055 } 056 List<EntityFieldInfo> fieldInfoList = tableInfo.getColumnInfoList().stream().map(item -> new EntityFieldInfo(generatorConfig, this, item)).collect(Collectors.toList()); 057 058 this.excludeFieldInfoList = fieldInfoList.stream().filter(item -> { 059 return generatorConfig.getColumnConfig().getExcludeColumns().contains(item.getColumnInfo().getName()) || generatorConfig.getColumnConfig().getExcludeColumns().contains(item.getColumnInfo().getName().toUpperCase()); 060 }).collect(Collectors.toList()); 061 062 fieldInfoList.removeAll(this.excludeFieldInfoList); 063 this.fieldInfoList = fieldInfoList; 064 065 this.entityPackage = generatorConfig.getBasePackage() + "." + generatorConfig.getEntityConfig().getPackageName(); 066 067 this.mapperName = this.name + generatorConfig.getMapperConfig().getSuffix(); 068 this.mapperPackage = generatorConfig.getBasePackage() + "." + generatorConfig.getMapperConfig().getPackageName(); 069 070 this.daoName = this.name + generatorConfig.getDaoConfig().getSuffix(); 071 this.daoPackage = generatorConfig.getBasePackage() + "." + generatorConfig.getDaoConfig().getPackageName(); 072 073 this.daoImplName = this.name + generatorConfig.getDaoImplConfig().getSuffix(); 074 this.daoImplPackage = generatorConfig.getBasePackage() + "." + generatorConfig.getDaoImplConfig().getPackageName(); 075 076 this.serviceName = this.name + generatorConfig.getServiceConfig().getSuffix(); 077 this.servicePackage = generatorConfig.getBasePackage() + "." + generatorConfig.getServiceConfig().getPackageName(); 078 079 this.serviceImplName = this.name + generatorConfig.getServiceImplConfig().getSuffix(); 080 this.serviceImplPackage = generatorConfig.getBasePackage() + "." + generatorConfig.getServiceImplConfig().getPackageName(); 081 082 this.actionName = this.name + generatorConfig.getActionConfig().getSuffix(); 083 this.actionPackage = generatorConfig.getBasePackage() + "." + generatorConfig.getActionConfig().getPackageName(); 084 } 085 086 public List<EntityFieldInfo> allFiledInfoList() { 087 List<EntityFieldInfo> list = new ArrayList<>(); 088 if (this.idFieldInfo != null) { 089 list.add(this.idFieldInfo); 090 } 091 list.addAll(this.excludeFieldInfoList); 092 list.addAll(this.fieldInfoList); 093 094 return list.stream().distinct().collect(Collectors.toList()); 095 } 096}