From e92aea30bfc5621821697cfa96a00ab4b27c307f Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Fri, 24 Apr 2026 22:07:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8API?= =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/apps/utils/MysqlUtils.java | 10 ++-- .../apps/web/mysql/DataSourceController.java | 52 ++++++++++++++++++- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/web-api/src/main/java/com/jeesite/modules/apps/utils/MysqlUtils.java b/web-api/src/main/java/com/jeesite/modules/apps/utils/MysqlUtils.java index c4c8eec..331d21b 100644 --- a/web-api/src/main/java/com/jeesite/modules/apps/utils/MysqlUtils.java +++ b/web-api/src/main/java/com/jeesite/modules/apps/utils/MysqlUtils.java @@ -79,7 +79,7 @@ public class MysqlUtils { /** * 获取指定数据库下的所有表信息(包含字段) */ - private static List getTablesByDatabase(Connection conn, String dbName) throws SQLException { + public static List getTablesByDatabase(Connection conn, String dbName) throws SQLException { List tableInfos = new ArrayList<>(); String tableSql = "SELECT " + "TABLE_NAME, TABLE_COMMENT, CREATE_TIME, UPDATE_TIME, " + @@ -118,7 +118,7 @@ public class MysqlUtils { /** * 获取指定表的字段信息 */ - private static List getFieldsByTable(Connection conn, String dbName, String tableName) throws SQLException { + public static List getFieldsByTable(Connection conn, String dbName, String tableName) throws SQLException { List columns = new ArrayList<>(); String fieldSql = "SELECT " + "TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE, COLUMN_TYPE, COLUMN_COMMENT, " + @@ -175,14 +175,14 @@ public class MysqlUtils { return null; } - public static List getTableTrees(MyDataSource dbConfig) { + public static List getTableTrees(MyDataSource dataSource) { List tableTrees = new ArrayList<>(); try { - Connection conn = getConnection(dbConfig); + Connection conn = getConnection(dataSource); Map> schemaInfo = MysqlUtils.getMysqlSchemaInfo(conn); for (Map.Entry> entry : schemaInfo.entrySet()) { for (DataTable dataTable : entry.getValue()) { - dataTable.setSourceId(dbConfig.getId()); + dataTable.setSourceId(dataSource.getId()); List dataTableFields = getFieldsByTable(conn, entry.getKey(), dataTable.getTableName()); tableTrees.add(new TableTree(dataTable, dataTableFields)); } diff --git a/web-api/src/main/java/com/jeesite/modules/apps/web/mysql/DataSourceController.java b/web-api/src/main/java/com/jeesite/modules/apps/web/mysql/DataSourceController.java index fdd14e4..d58c949 100644 --- a/web-api/src/main/java/com/jeesite/modules/apps/web/mysql/DataSourceController.java +++ b/web-api/src/main/java/com/jeesite/modules/apps/web/mysql/DataSourceController.java @@ -1,11 +1,17 @@ package com.jeesite.modules.apps.web.mysql; + +import com.jeesite.modules.apps.Module.Dict.DataColumn; import com.jeesite.modules.apps.Module.Dict.DataSource; +import com.jeesite.modules.apps.Module.Dict.DataTable; +import com.jeesite.modules.apps.Module.Dict.TableTree; import com.jeesite.modules.apps.utils.MysqlUtils; +import com.jeesite.modules.apps.utils.SqlUtils; import com.jeesite.modules.biz.entity.MyDataSource; import com.jeesite.modules.biz.service.MyDataSourceService; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import java.sql.Connection; import java.util.ArrayList; @@ -17,7 +23,8 @@ public class DataSourceController { @Resource private MyDataSourceService myDataSourceService; - @RequestMapping(value = {"listAll", ""}) + @RequestMapping(value = "listAll") + @ResponseBody public List listAll(MyDataSource myDataSource) throws Exception { List sourceList = new ArrayList<>(); MyDataSource source = myDataSourceService.get(myDataSource); @@ -28,4 +35,47 @@ public class DataSourceController { } return sourceList; } + + @RequestMapping(value = "listTable") + @ResponseBody + public List listTable(DataTable dataTable) throws Exception { + MyDataSource source = myDataSourceService.get(dataTable.getSourceId()); + Connection conn = MysqlUtils.getConnection(source); + return MysqlUtils.getTablesByDatabase(conn, source.getDbName()); + } + + @RequestMapping(value = "listColumn") + @ResponseBody + public List listColumn(DataTable dataTable) throws Exception { + MyDataSource source = myDataSourceService.get(dataTable.getSourceId()); + Connection conn = MysqlUtils.getConnection(source); + return MysqlUtils.getFieldsByTable(conn, dataTable.getDataSource(), dataTable.getTableName()); + } + + @RequestMapping(value = "createTable") + @ResponseBody + public String createTable(DataTable dataTable) throws Exception { + MyDataSource source = myDataSourceService.get(dataTable.getSourceId()); + Connection conn = MysqlUtils.getConnection(source); + List dataColumns = MysqlUtils.getFieldsByTable(conn, dataTable.getDataSource(), dataTable.getTableName()); + return SqlUtils.CreateTableSql(dataTable, dataColumns); + } + + @RequestMapping(value = "selectTable") + @ResponseBody + public String selectTable(DataTable dataTable) throws Exception { + MyDataSource source = myDataSourceService.get(dataTable.getSourceId()); + Connection conn = MysqlUtils.getConnection(source); + List dataColumns = MysqlUtils.getFieldsByTable(conn, dataTable.getDataSource(), dataTable.getTableName()); + return SqlUtils.SelectSqlComments(dataTable, dataColumns); + } + + @RequestMapping(value = "listTree") + @ResponseBody + public List listTree(MyDataSource myDataSource) { + MyDataSource source = myDataSourceService.get(myDataSource); + return MysqlUtils.getTableTrees(source); + } + + }