💩 改进命名方式

This commit is contained in:
Bunny 2025-07-01 15:28:18 +08:00
parent 1e07831818
commit 08c4ff9b6b
4 changed files with 21 additions and 17 deletions

View File

@ -6,7 +6,6 @@ import cn.bunny.domain.entity.TableMetaData;
import cn.bunny.exception.GeneratorCodeException; import cn.bunny.exception.GeneratorCodeException;
import cn.bunny.utils.TypeConvertUtil; import cn.bunny.utils.TypeConvertUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -23,6 +22,7 @@ import java.util.*;
public class DatabaseMetadataProvider implements IMetadataProvider { public class DatabaseMetadataProvider implements IMetadataProvider {
private final DataSource dataSource; private final DataSource dataSource;
@Value("${bunny.master.database}") @Value("${bunny.master.database}")
private String currentDatabase; private String currentDatabase;
@ -50,7 +50,7 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
return primaryKeys; return primaryKeys;
} catch (SQLException e) { } catch (SQLException e) {
throw new GeneratorCodeException("获取主键失败:" + e.getMessage()); throw new GeneratorCodeException("Get primary key error:" + e.getMessage());
} }
} }
@ -59,7 +59,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
* *
* @return 当前连接的数据库信息属性 * @return 当前连接的数据库信息属性
*/ */
@SneakyThrows
public DatabaseInfoMetaData databaseInfoMetaData() { public DatabaseInfoMetaData databaseInfoMetaData() {
try (Connection connection = dataSource.getConnection()) { try (Connection connection = dataSource.getConnection()) {
DatabaseMetaData metaData = connection.getMetaData(); DatabaseMetaData metaData = connection.getMetaData();
@ -73,6 +72,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
.username(metaData.getUserName()) .username(metaData.getUserName())
.currentDatabase(currentDatabase) .currentDatabase(currentDatabase)
.build(); .build();
} catch (SQLException e) {
throw new GeneratorCodeException("Get database info error:" + e.getMessage());
} }
} }
@ -82,7 +83,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
* @param identifier 表名称或sql * @param identifier 表名称或sql
* @return 表西悉尼 * @return 表西悉尼
*/ */
@SneakyThrows
@Override @Override
public TableMetaData getTableMetadata(String identifier) { public TableMetaData getTableMetadata(String identifier) {
TableMetaData tableMetaData; TableMetaData tableMetaData;
@ -113,6 +113,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
} }
return tableMetaData; return tableMetaData;
} catch (Exception e) {
throw new GeneratorCodeException(e.getMessage());
} }
} }
@ -121,7 +123,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
* *
* @return 所有表信息 * @return 所有表信息
*/ */
@SneakyThrows
public List<TableMetaData> getTableMetadataBatch(String dbName) { public List<TableMetaData> getTableMetadataBatch(String dbName) {
// 当前数据库数据库所有的表 // 当前数据库数据库所有的表
List<TableMetaData> allTableInfo = new ArrayList<>(); List<TableMetaData> allTableInfo = new ArrayList<>();
@ -141,6 +142,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
allTableInfo.add(tableMetaData); allTableInfo.add(tableMetaData);
} }
} catch (Exception e) {
throw new GeneratorCodeException("Get error of [current/all] database tables" + e.getMessage());
} }
return allTableInfo; return allTableInfo;
@ -152,7 +155,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
* @param identifier 表名称或sql * @param identifier 表名称或sql
* @return 当前表所有的列内容 * @return 当前表所有的列内容
*/ */
@SneakyThrows
@Override @Override
public List<ColumnMetaData> getColumnInfoList(String identifier) { public List<ColumnMetaData> getColumnInfoList(String identifier) {
try (Connection connection = dataSource.getConnection()) { try (Connection connection = dataSource.getConnection()) {
@ -198,6 +200,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
} }
return new ArrayList<>(map.values()); return new ArrayList<>(map.values());
} catch (Exception e) {
throw new RuntimeException("Get error of database columns mete data" + e.getMessage());
} }
} }
} }

View File

@ -11,7 +11,7 @@ import java.util.List;
* 模板方法模式 * 模板方法模式
* 如果需要继承 AbstractVmsGenerator * 如果需要继承 AbstractVmsGenerator
*/ */
public abstract class AbstractVmsGeneratorTemplate { public abstract class AbstractTemplateGenerator {
/** /**
* 添加生成内容 * 添加生成内容

View File

@ -15,7 +15,7 @@ import java.util.Date;
* 使用模板方法方便扩展 * 使用模板方法方便扩展
* 如果需要继承 AbstractVmsGenerator * 如果需要继承 AbstractVmsGenerator
*/ */
public class VmsArgumentDtoBaseTemplateGenerator extends AbstractTemplateGenerator { public class VmsTemplateGenerator extends AbstractTemplateGenerator {
private final VmsArgumentDto dto; private final VmsArgumentDto dto;
private final String path; private final String path;
@ -26,7 +26,7 @@ public class VmsArgumentDtoBaseTemplateGenerator extends AbstractTemplateGenerat
* @param path 当前路径 * @param path 当前路径
* @param tableMetaData 表名称 * @param tableMetaData 表名称
*/ */
public VmsArgumentDtoBaseTemplateGenerator(VmsArgumentDto dto, String path, TableMetaData tableMetaData) { public VmsTemplateGenerator(VmsArgumentDto dto, String path, TableMetaData tableMetaData) {
this.dto = dto; this.dto = dto;
this.path = path; this.path = path;
this.tableMetaData = tableMetaData; this.tableMetaData = tableMetaData;

View File

@ -2,7 +2,7 @@ package cn.bunny.service.impl.vms;
import cn.bunny.core.factory.DatabaseMetadataProvider; import cn.bunny.core.factory.DatabaseMetadataProvider;
import cn.bunny.core.factory.SqlMetadataProvider; import cn.bunny.core.factory.SqlMetadataProvider;
import cn.bunny.core.template.VmsArgumentDtoBaseTemplateGenerator; import cn.bunny.core.template.VmsTemplateGenerator;
import cn.bunny.domain.dto.VmsArgumentDto; import cn.bunny.domain.dto.VmsArgumentDto;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;
import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.entity.TableMetaData;
@ -25,8 +25,8 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor @RequiredArgsConstructor
public class VmsCodeGeneratorService { public class VmsCodeGeneratorService {
private final DatabaseMetadataProvider databaseInfoCore; private final DatabaseMetadataProvider databaseMetadataProvider;
private final SqlMetadataProvider sqlParserDatabaseInfo; private final SqlMetadataProvider sqlMetadataProvider;
/** /**
* 根据DTO生成代码模板 * 根据DTO生成代码模板
@ -44,7 +44,7 @@ public class VmsCodeGeneratorService {
return dto.getPath().stream() return dto.getPath().stream()
.map(path -> { .map(path -> {
VmsArgumentDtoBaseTemplateGenerator generator = new VmsArgumentDtoBaseTemplateGenerator(dto, path, tableMetaData); VmsTemplateGenerator generator = new VmsTemplateGenerator(dto, path, tableMetaData);
StringWriter writer = generator.generatorCodeTemplate(tableMetaData, columnInfoList); StringWriter writer = generator.generatorCodeTemplate(tableMetaData, columnInfoList);
String processedPath = VmsUtil.handleVmFilename(path, tableMetaData.getTableName()); String processedPath = VmsUtil.handleVmFilename(path, tableMetaData.getTableName());
@ -71,8 +71,8 @@ public class VmsCodeGeneratorService {
*/ */
private TableMetaData getTableMetadata(VmsArgumentDto dto, String tableName) { private TableMetaData getTableMetadata(VmsArgumentDto dto, String tableName) {
return StringUtils.hasText(dto.getSql()) return StringUtils.hasText(dto.getSql())
? sqlParserDatabaseInfo.getTableMetadata(dto.getSql()) ? sqlMetadataProvider.getTableMetadata(dto.getSql())
: databaseInfoCore.getTableMetadata(tableName); : databaseMetadataProvider.getTableMetadata(tableName);
} }
/** /**
@ -84,8 +84,8 @@ public class VmsCodeGeneratorService {
*/ */
private List<ColumnMetaData> getColumnInfoList(String sql, String tableName) { private List<ColumnMetaData> getColumnInfoList(String sql, String tableName) {
return StringUtils.hasText(sql) return StringUtils.hasText(sql)
? sqlParserDatabaseInfo.getColumnInfoList(sql) ? sqlMetadataProvider.getColumnInfoList(sql)
: databaseInfoCore.getColumnInfoList(tableName).stream().distinct().toList(); : databaseMetadataProvider.getColumnInfoList(tableName).stream().distinct().toList();
} }
} }