diff --git a/generator-code-server/src/main/java/cn/bunny/controller/SqlParserController.java b/generator-code-server/src/main/java/cn/bunny/controller/SqlParserController.java index 89480b9..206b708 100644 --- a/generator-code-server/src/main/java/cn/bunny/controller/SqlParserController.java +++ b/generator-code-server/src/main/java/cn/bunny/controller/SqlParserController.java @@ -1,13 +1,12 @@ package cn.bunny.controller; -import cn.bunny.core.factory.ConcreteSqlParserDatabaseInfo; +import cn.bunny.core.factory.ConcreteSqlParserDatabaseInfoService; import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.result.Result; -import cn.bunny.service.SqlParserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; +import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,23 +16,22 @@ import java.util.List; @Tag(name = "解析SQL", description = "解析SQL接口") @RestController @RequestMapping("/api/sqlParser") +@RequiredArgsConstructor public class SqlParserController { - @Resource - private SqlParserService sqlParserService; + private final ConcreteSqlParserDatabaseInfoService sqlParserService; @Operation(summary = "解析SQL成表信息", description = "解析SQL成表信息") @PostMapping("tableInfo") public Result tableInfo(String sql) { - TableMetaData vo = sqlParserService.tableInfo(sql); + TableMetaData vo = sqlParserService.getTableMetadata(sql); return Result.success(vo); } @Operation(summary = "解析SQL成列数据", description = "解析SQL成列数据") @PostMapping("columnMetaData") public Result> columnMetaData(String sql) { - ConcreteSqlParserDatabaseInfo databaseInfoCore = new ConcreteSqlParserDatabaseInfo(); - List vo = databaseInfoCore.tableColumnInfo(sql); + List vo = sqlParserService.tableColumnInfo(sql); return Result.success(vo); } } diff --git a/generator-code-server/src/main/java/cn/bunny/controller/TableController.java b/generator-code-server/src/main/java/cn/bunny/controller/TableController.java index 72732cf..bb250eb 100644 --- a/generator-code-server/src/main/java/cn/bunny/controller/TableController.java +++ b/generator-code-server/src/main/java/cn/bunny/controller/TableController.java @@ -1,5 +1,6 @@ package cn.bunny.controller; +import cn.bunny.core.factory.ConcreteDatabaseInfoService; import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.DatabaseInfoMetaData; import cn.bunny.domain.entity.TableMetaData; @@ -7,7 +8,7 @@ import cn.bunny.domain.result.Result; import cn.bunny.service.TableService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; +import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,11 +18,11 @@ import java.util.List; @Tag(name = "数据库表控制器", description = "数据库表信息接口") @RestController @RequestMapping("/api/table") +@RequiredArgsConstructor public class TableController { - @Resource - private TableService tableService; - + private final TableService tableService; + private final ConcreteDatabaseInfoService concreteDatabaseInfoService; @Operation(summary = "当前数据库信息", description = "当前连接的数据库信息") @GetMapping("databaseInfoMetaData") @@ -33,21 +34,21 @@ public class TableController { @Operation(summary = "数据库所有的表", description = "获取[当前/所有]数据库表") @GetMapping("databaseTableList") public Result> databaseTableList(String dbName) { - List list = tableService.databaseTableList(dbName); + List list = concreteDatabaseInfoService.databaseTableList(dbName); return Result.success(list); } @Operation(summary = "表属性", description = "获取当前查询表属性") @GetMapping("tableMetaData") public Result tableMetaData(String tableName) { - TableMetaData tableMetaData = tableService.tableMetaData(tableName); + TableMetaData tableMetaData = concreteDatabaseInfoService.getTableMetadata(tableName); return Result.success(tableMetaData); } @Operation(summary = "表的列属性", description = "获取当前查询表中列属性") @GetMapping("tableColumnInfo") public Result> tableColumnInfo(String tableName) { - List columnInfo = tableService.tableColumnInfo(tableName); + List columnInfo = concreteDatabaseInfoService.tableColumnInfo(tableName); return Result.success(columnInfo); } } diff --git a/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteDatabaseInfo.java b/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteDatabaseInfoService.java similarity index 98% rename from generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteDatabaseInfo.java rename to generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteDatabaseInfoService.java index cd57e99..ac004cc 100644 --- a/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteDatabaseInfo.java +++ b/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteDatabaseInfoService.java @@ -15,7 +15,7 @@ import java.sql.ResultSet; import java.util.*; @Component -public class ConcreteDatabaseInfo extends AbstractDatabaseInfo { +public class ConcreteDatabaseInfoService extends AbstractDatabaseInfo { @Value("${bunny.master.database}") private String currentDatabase; diff --git a/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteSqlParserDatabaseInfo.java b/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteSqlParserDatabaseInfoService.java similarity index 92% rename from generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteSqlParserDatabaseInfo.java rename to generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteSqlParserDatabaseInfoService.java index 43ba162..d3d16fa 100644 --- a/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteSqlParserDatabaseInfo.java +++ b/generator-code-server/src/main/java/cn/bunny/core/factory/ConcreteSqlParserDatabaseInfoService.java @@ -2,6 +2,7 @@ package cn.bunny.core.factory; import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.TableMetaData; +import cn.bunny.exception.GeneratorCodeException; import cn.bunny.utils.TypeConvertUtil; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.CCJSqlParserUtil; @@ -15,13 +16,15 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; @Component -public class ConcreteSqlParserDatabaseInfo extends AbstractDatabaseInfo { +public class ConcreteSqlParserDatabaseInfoService extends AbstractDatabaseInfo { /** * 解析 sql 表信息 + * 先解析SQL语句,解析列字段信息 * * @param sql 表名称或sql * @return 表西悉尼 + * @see CCJSqlParserUtil 使用这个工具进行SQL的解析 */ @Override public TableMetaData getTableMetadata(String sql) { @@ -32,8 +35,9 @@ public class ConcreteSqlParserDatabaseInfo extends AbstractDatabaseInfo { try { statement = CCJSqlParserUtil.parse(sql); } catch (JSQLParserException e) { - throw new RuntimeException("SQL解析失败"); + throw new GeneratorCodeException("SQL解析失败"); } + if (!(statement instanceof CreateTable createTable)) { throw new IllegalArgumentException("缺少SQL语句"); } diff --git a/generator-code-server/src/main/java/cn/bunny/domain/entity/TableMetaData.java b/generator-code-server/src/main/java/cn/bunny/domain/entity/TableMetaData.java index 966bd5d..543c26c 100644 --- a/generator-code-server/src/main/java/cn/bunny/domain/entity/TableMetaData.java +++ b/generator-code-server/src/main/java/cn/bunny/domain/entity/TableMetaData.java @@ -1,5 +1,6 @@ package cn.bunny.domain.entity; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -11,23 +12,25 @@ import java.util.List; @Builder @AllArgsConstructor @NoArgsConstructor +@Schema(name = "TableMetaData", description = "表信息数据") public class TableMetaData { - /* 表名 */ + @Schema(name = "tableName", description = "表名") private String tableName; - /* 注释内容 */ + @Schema(name = "comment", description = "注释内容") private String comment; - /* 表目录 */ + @Schema(name = "tableCats", description = "表目录") private String tableCat; - /* 表类型(通常是"TABLE") */ + @Schema(name = "tableType", description = "表类型(通常是\"TABLE\")") private String tableType; - /* 类名 */ + @Schema(name = "className", description = "类名") private String className; - /* 列名称 */ + @Schema(name = "columns", description = "列名称") private List columns; + } \ No newline at end of file diff --git a/generator-code-server/src/main/java/cn/bunny/service/SqlParserService.java b/generator-code-server/src/main/java/cn/bunny/service/SqlParserService.java deleted file mode 100644 index c827850..0000000 --- a/generator-code-server/src/main/java/cn/bunny/service/SqlParserService.java +++ /dev/null @@ -1,13 +0,0 @@ -package cn.bunny.service; - -import cn.bunny.domain.entity.TableMetaData; - -public interface SqlParserService { - /** - * 解析SQL内容 - * - * @param sql Sql语句 - * @return 表信息内容 - */ - TableMetaData tableInfo(String sql); -} diff --git a/generator-code-server/src/main/java/cn/bunny/service/TableService.java b/generator-code-server/src/main/java/cn/bunny/service/TableService.java index f750e03..f50ca1a 100644 --- a/generator-code-server/src/main/java/cn/bunny/service/TableService.java +++ b/generator-code-server/src/main/java/cn/bunny/service/TableService.java @@ -1,40 +1,14 @@ package cn.bunny.service; -import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.DatabaseInfoMetaData; -import cn.bunny.domain.entity.TableMetaData; - -import java.util.List; public interface TableService { - /** - * 获取表属性 - * - * @param tableName 表名称 - * @return 表属性 - */ - TableMetaData tableMetaData(String tableName); - - /** - * 获取所有数据库 - * - * @return 所有表信息 - */ - List databaseTableList(String tableName); - - /** - * 获取列属性 - * - * @param tableName 表名称 - * @return 当前表所有的列内容 - */ - List tableColumnInfo(String tableName); - /** * 数据库所有的信息 * * @return 当前连接的数据库信息属性 */ DatabaseInfoMetaData databaseInfoMetaData(); + } diff --git a/generator-code-server/src/main/java/cn/bunny/service/impl/SqlParserServiceImpl.java b/generator-code-server/src/main/java/cn/bunny/service/impl/SqlParserServiceImpl.java deleted file mode 100644 index ecb5e55..0000000 --- a/generator-code-server/src/main/java/cn/bunny/service/impl/SqlParserServiceImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.bunny.service.impl; - -import cn.bunny.core.factory.ConcreteSqlParserDatabaseInfo; -import cn.bunny.domain.entity.TableMetaData; -import cn.bunny.service.SqlParserService; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class SqlParserServiceImpl implements SqlParserService { - - private final ConcreteSqlParserDatabaseInfo sqlParserDatabaseInfo; - - /** - * 解析SQL内容 - * - * @param sql Sql语句 - * @return 表信息内容 - */ - @Override - public TableMetaData tableInfo(String sql) { - TableMetaData tableInfoVo = new TableMetaData(); - - TableMetaData tableMetaData = sqlParserDatabaseInfo.getTableMetadata(sql); - BeanUtils.copyProperties(tableMetaData, tableInfoVo); - return tableInfoVo; - } -} diff --git a/generator-code-server/src/main/java/cn/bunny/service/impl/TableServiceImpl.java b/generator-code-server/src/main/java/cn/bunny/service/impl/TableServiceImpl.java index 1819c72..a9be303 100644 --- a/generator-code-server/src/main/java/cn/bunny/service/impl/TableServiceImpl.java +++ b/generator-code-server/src/main/java/cn/bunny/service/impl/TableServiceImpl.java @@ -1,7 +1,6 @@ package cn.bunny.service.impl; -import cn.bunny.core.factory.ConcreteDatabaseInfo; -import cn.bunny.domain.entity.ColumnMetaData; +import cn.bunny.core.factory.ConcreteDatabaseInfoService; import cn.bunny.domain.entity.DatabaseInfoMetaData; import cn.bunny.domain.entity.TableMetaData; import cn.bunny.service.TableService; @@ -16,39 +15,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class TableServiceImpl implements TableService { - private final ConcreteDatabaseInfo databaseInfoCore; - - /** - * 获取表属性 - * - * @param tableName 表名称 - * @return 表属性 - */ - @Override - public TableMetaData tableMetaData(String tableName) { - return databaseInfoCore.getTableMetadata(tableName); - } - - /** - * 获取[当前/所有]数据库表 - * - * @return 所有表信息 - */ - @Override - public List databaseTableList(String dbName) { - return databaseInfoCore.databaseTableList(dbName); - } - - /** - * 获取当前表的列属性 - * - * @param tableName 表名称 - * @return 当前表所有的列内容 - */ - @Override - public List tableColumnInfo(String tableName) { - return databaseInfoCore.tableColumnInfo(tableName); - } + private final ConcreteDatabaseInfoService concreteDatabaseInfoService; /** * 数据库所有的信息 @@ -58,7 +25,7 @@ public class TableServiceImpl implements TableService { @SneakyThrows @Override public DatabaseInfoMetaData databaseInfoMetaData() { - List databaseTableList = databaseTableList(null); + List databaseTableList = concreteDatabaseInfoService.databaseTableList(null); // 将当前数据库表分组,以数据库名称为key List databaseList = databaseTableList.stream() @@ -70,7 +37,7 @@ public class TableServiceImpl implements TableService { return tableInfoVo; }).toList(); - DatabaseInfoMetaData databaseInfoMetaData = databaseInfoCore.databaseInfoMetaData(); + DatabaseInfoMetaData databaseInfoMetaData = concreteDatabaseInfoService.databaseInfoMetaData(); databaseInfoMetaData.setDatabaseList(databaseList); return databaseInfoMetaData; diff --git a/generator-code-server/src/main/java/cn/bunny/service/impl/vms/VmsCodeGeneratorService.java b/generator-code-server/src/main/java/cn/bunny/service/impl/vms/VmsCodeGeneratorService.java index 736f777..6761067 100644 --- a/generator-code-server/src/main/java/cn/bunny/service/impl/vms/VmsCodeGeneratorService.java +++ b/generator-code-server/src/main/java/cn/bunny/service/impl/vms/VmsCodeGeneratorService.java @@ -1,7 +1,7 @@ package cn.bunny.service.impl.vms; -import cn.bunny.core.factory.ConcreteDatabaseInfo; -import cn.bunny.core.factory.ConcreteSqlParserDatabaseInfo; +import cn.bunny.core.factory.ConcreteDatabaseInfoService; +import cn.bunny.core.factory.ConcreteSqlParserDatabaseInfoService; import cn.bunny.core.template.VmsArgumentDtoBaseVmsGeneratorTemplate; import cn.bunny.domain.dto.VmsArgumentDto; import cn.bunny.domain.entity.ColumnMetaData; @@ -25,8 +25,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class VmsCodeGeneratorService { - private final ConcreteDatabaseInfo databaseInfoCore; - private final ConcreteSqlParserDatabaseInfo sqlParserDatabaseInfo; + private final ConcreteDatabaseInfoService databaseInfoCore; + private final ConcreteSqlParserDatabaseInfoService sqlParserDatabaseInfo; /** * 根据DTO生成代码模板 diff --git a/generator-code-server/src/test/java/cn/bunny/utils/ConcreteDatabaseInfoCoreTest.java b/generator-code-server/src/test/java/cn/bunny/utils/ConcreteDatabaseInfoServiceCoreTest.java similarity index 97% rename from generator-code-server/src/test/java/cn/bunny/utils/ConcreteDatabaseInfoCoreTest.java rename to generator-code-server/src/test/java/cn/bunny/utils/ConcreteDatabaseInfoServiceCoreTest.java index 65b0763..4f13360 100644 --- a/generator-code-server/src/test/java/cn/bunny/utils/ConcreteDatabaseInfoCoreTest.java +++ b/generator-code-server/src/test/java/cn/bunny/utils/ConcreteDatabaseInfoServiceCoreTest.java @@ -14,7 +14,7 @@ import java.util.ArrayList; import java.util.List; @SpringBootTest -class ConcreteDatabaseInfoCoreTest { +class ConcreteDatabaseInfoServiceCoreTest { String tableName = "sys_i18n";