新增MySQL和pg数据库的同步
This commit is contained in:
24
src/main/java/com/mini/capi/model/TabResult.java
Normal file
24
src/main/java/com/mini/capi/model/TabResult.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package com.mini.capi.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class TabResult implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
private String tableName;
|
||||
|
||||
private String tableDesc;
|
||||
|
||||
public TabResult(String tableName,String tableDesc){
|
||||
this.tableName = tableName;
|
||||
this.tableDesc = tableDesc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.mini.capi.biz.domain.DbConfig;
|
||||
import com.mini.capi.biz.service.DbConfigService;
|
||||
import com.mini.capi.config.DataSourceConfig;
|
||||
import com.mini.capi.model.ApiResult;
|
||||
import com.mini.capi.model.TabResult;
|
||||
import com.mini.capi.utils.vToken;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
@@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -26,7 +28,7 @@ public class dbController {
|
||||
* 获取MySQL的当前连接下的所有数据表
|
||||
*/
|
||||
@GetMapping("/getApiSourceTables")
|
||||
public ApiResult<List<String>> listSourceTables(String token, String dbId) {
|
||||
public ApiResult<List<TabResult>> listSourceTables(String token, String dbId) {
|
||||
// 1. 验证token有效性
|
||||
if (!vToken.isValidToken(token)) {
|
||||
return ApiResult.error(401, "无效的访问令牌");
|
||||
@@ -45,15 +47,31 @@ public class dbController {
|
||||
|
||||
try {
|
||||
JdbcTemplate jdbcTemplate = DataSourceConfig.createJdbcTemplate(dbConfig);
|
||||
// 补充参数传递,修复SQL参数绑定问题
|
||||
String querySql = "SELECT table_name FROM information_schema.tables WHERE table_schema = ?";
|
||||
// 补充参数传递
|
||||
String querySql = "SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.tables WHERE TABLE_SCHEMA = ?";
|
||||
List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql, dbConfig.getDbSchema());
|
||||
List<String> data = result.stream()
|
||||
.map(row -> row.values().iterator().next().toString())
|
||||
List<TabResult> data = result.stream()
|
||||
.map(row -> {
|
||||
String tableName = row.get("TABLE_NAME") != null ? row.get("TABLE_NAME").toString() : "";
|
||||
String tableDesc = row.get("TABLE_COMMENT") != null ? row.get("TABLE_COMMENT").toString() : "";
|
||||
return new TabResult(tableName, getComment(tableName, tableDesc));
|
||||
})
|
||||
.sorted(Comparator.comparing(TabResult::getTableName)) // 按表名排序
|
||||
.toList();
|
||||
return ApiResult.success(data);
|
||||
} catch (Exception e) {
|
||||
return ApiResult.error(101, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private String getComment(String tableName, String tableDesc) {
|
||||
boolean hasTableDesc = tableDesc != null && !tableDesc.trim().isEmpty();
|
||||
// 根据表描述是否存在返回不同格式
|
||||
if (hasTableDesc) {
|
||||
return String.format("%s(%s)", tableDesc.trim(), tableName);
|
||||
} else {
|
||||
return tableName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user