Commit 4f5dbb2288912f74500cdc902382a5d28d040d78

Authored by gaibu
1 parent b8c728ae

feat: 优化代码生成列表加载速度

yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DatabaseTableServiceImpl.java
@@ -12,12 +12,9 @@ import com.baomidou.mybatisplus.generator.config.po.TableInfo; @@ -12,12 +12,9 @@ import com.baomidou.mybatisplus.generator.config.po.TableInfo;
12 import com.baomidou.mybatisplus.generator.config.rules.DateType; 12 import com.baomidou.mybatisplus.generator.config.rules.DateType;
13 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
14 14
15 -import javax.annotation.PostConstruct;  
16 import javax.annotation.Resource; 15 import javax.annotation.Resource;
17 import java.util.Comparator; 16 import java.util.Comparator;
18 -import java.util.HashMap;  
19 import java.util.List; 17 import java.util.List;
20 -import java.util.Map;  
21 import java.util.stream.Collectors; 18 import java.util.stream.Collectors;
22 19
23 /** 20 /**
@@ -31,26 +28,6 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { @@ -31,26 +28,6 @@ public class DatabaseTableServiceImpl implements DatabaseTableService {
31 @Resource 28 @Resource
32 private DataSourceConfigService dataSourceConfigService; 29 private DataSourceConfigService dataSourceConfigService;
33 30
34 - private final Map<Long, ConfigBuilder> ConfigBuilderMap = new HashMap<>();  
35 -  
36 - @PostConstruct  
37 - public void initConfigBuilderMap() {  
38 - for (DataSourceConfigDO config : dataSourceConfigService.getDataSourceConfigList()) {  
39 - // 使用 MyBatis Plus Generator 解析表结构  
40 - DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(config.getUrl(), config.getUsername(),  
41 - config.getPassword()).build();  
42 - StrategyConfig.Builder strategyConfig = new StrategyConfig.Builder();  
43 - // 移除工作流和定时任务前缀的表名 // TODO 未来做成可配置  
44 - strategyConfig.addExclude("ACT_[\\S\\s]+|QRTZ_[\\S\\s]+|FLW_[\\S\\s]+");  
45 -  
46 - GlobalConfig globalConfig = new GlobalConfig.Builder().dateType(DateType.TIME_PACK).build(); // 只使用 Date 类型,不使用 LocalDate  
47 - ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, strategyConfig.build(),  
48 - null, globalConfig, null);  
49 -  
50 - ConfigBuilderMap.put(config.getId(), builder);  
51 - }  
52 - }  
53 -  
54 @Override 31 @Override
55 public List<TableInfo> getTableList(Long dataSourceConfigId, String nameLike, String commentLike) { 32 public List<TableInfo> getTableList(Long dataSourceConfigId, String nameLike, String commentLike) {
56 List<TableInfo> tables = getTableList0(dataSourceConfigId, null); 33 List<TableInfo> tables = getTableList0(dataSourceConfigId, null);
@@ -65,16 +42,28 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { @@ -65,16 +42,28 @@ public class DatabaseTableServiceImpl implements DatabaseTableService {
65 } 42 }
66 43
67 public List<TableInfo> getTableList0(Long dataSourceConfigId, String name) { 44 public List<TableInfo> getTableList0(Long dataSourceConfigId, String name) {
68 - ConfigBuilder builder = ConfigBuilderMap.get(dataSourceConfigId);  
69 - Assert.notNull(builder, "数据源({}) 不存在!", dataSourceConfigId); 45 + // 获得数据源配置
  46 + DataSourceConfigDO config = dataSourceConfigService.getDataSourceConfig(dataSourceConfigId);
  47 + Assert.notNull(config, "数据源({}) 不存在!", dataSourceConfigId);
70 48
  49 + // 使用 MyBatis Plus Generator 解析表结构
  50 + DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(config.getUrl(), config.getUsername(),
  51 + config.getPassword()).build();
  52 + StrategyConfig.Builder strategyConfig = new StrategyConfig.Builder();
  53 + if (StrUtil.isNotEmpty(name)) {
  54 + strategyConfig.addInclude(name);
  55 + }else{
  56 + // 移除工作流和定时任务前缀的表名 // TODO 未来做成可配置
  57 + strategyConfig.addExclude("ACT_[\\S\\s]+|QRTZ_[\\S\\s]+|FLW_[\\S\\s]+");
  58 + }
  59 +
  60 + GlobalConfig globalConfig = new GlobalConfig.Builder().dateType(DateType.TIME_PACK).build(); // 只使用 Date 类型,不使用 LocalDate
  61 + ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, strategyConfig.build(),
  62 + null, globalConfig, null);
71 // 按照名字排序 63 // 按照名字排序
72 List<TableInfo> tables = builder.getTableInfoList(); 64 List<TableInfo> tables = builder.getTableInfoList();
73 - if (StrUtil.isBlank(name)) {  
74 - tables.sort(Comparator.comparing(TableInfo::getName));  
75 - return tables;  
76 - } else {  
77 - return CollUtil.filter(tables, tableInfo -> tableInfo.getName().equals(name));  
78 - } 65 + tables.sort(Comparator.comparing(TableInfo::getName));
  66 + return tables;
79 } 67 }
  68 +
80 } 69 }