feat:增加了oracle,postgresql,sqlserver()
parent
aeca277369
commit
0215b0cb5e
|
@ -22,5 +22,28 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
public class MuYuKVTApplication {
|
public class MuYuKVTApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(MuYuKVTApplication.class);
|
SpringApplication.run(MuYuKVTApplication.class);
|
||||||
|
System.out.println(" " +
|
||||||
|
" _ooOoo_\n" +
|
||||||
|
" o8888888o\n" +
|
||||||
|
" 88\" . \"88\n" +
|
||||||
|
" (| -_- |)\n" +
|
||||||
|
" O\\ = /O\n" +
|
||||||
|
" ____/`---'\\____\n" +
|
||||||
|
" .' \\\\| |// `.\n" +
|
||||||
|
" / \\\\||| : |||// \\\n" +
|
||||||
|
" / _||||| -:- |||||- \\\n" +
|
||||||
|
" | | \\\\\\ - /// | |\n" +
|
||||||
|
" | \\_| ''\\---/'' | |\n" +
|
||||||
|
" \\ .-\\__ `-` ___/-. /\n" +
|
||||||
|
" ___`. .' /--.--\\ `. . __\n" +
|
||||||
|
" .\"\" '< `.___\\_<|>_/___.' >'\"\".\n" +
|
||||||
|
" | | : `- \\`.;`\\ _ /`;.`/ - ` : | |\n" +
|
||||||
|
" \\ \\ `-. \\_ __\\ /__ _/ .-` / /\n" +
|
||||||
|
" ======`-.____`-.___\\_____/___.-`____.-'======\n" +
|
||||||
|
" `=---='\n" +
|
||||||
|
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
|
||||||
|
" // 佛祖保佑 永不宕机 永无BUG //" +
|
||||||
|
" 最好是永无BUG\n" +
|
||||||
|
"");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,6 +126,12 @@ public class KvtController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/Statistics")
|
||||||
|
public Result statistics(){
|
||||||
|
return kvtService.statistics();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.zx.domain.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassDescription:
|
||||||
|
* @JdkVersion: 17
|
||||||
|
* @Author: zhangxu
|
||||||
|
* @Created: 2024/4/24 17:25
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class Statistics {
|
||||||
|
|
||||||
|
private Long dataAsset;
|
||||||
|
|
||||||
|
private Long assetModel;
|
||||||
|
|
||||||
|
private Long dataModel;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,8 @@
|
||||||
package com.zx.mapper;
|
package com.zx.mapper;
|
||||||
|
|
||||||
import com.zx.domain.req.DataAsset;
|
import com.zx.domain.req.DataAsset;
|
||||||
import feign.Param;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import javax.lang.model.type.ArrayType;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,5 +61,8 @@ public interface DataAssetMapper {
|
||||||
*/
|
*/
|
||||||
public int deleteDataAssetByIds(Long[] ids);
|
public int deleteDataAssetByIds(Long[] ids);
|
||||||
|
|
||||||
void batchInsert(@Param("dataAssets") ArrayList<DataAsset> dataAssets);
|
void batchInsert(@Param("dataAssets") List<DataAsset> dataAssets);
|
||||||
|
|
||||||
|
|
||||||
|
List<DataAsset> selectDataAssetBatchId(@Param("longs") List<Long> longs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package com.zx.mapper;
|
package com.zx.mapper;
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.zx.domain.req.DataAsset;
|
||||||
import com.zx.domain.req.JdbcClass;
|
import com.zx.domain.req.JdbcClass;
|
||||||
|
import feign.Param;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -49,4 +51,7 @@ public interface KvtMapper {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,5 +65,10 @@ public interface KvtService {
|
||||||
|
|
||||||
Result dattaList(JdbcClass jdbcClass);
|
Result dattaList(JdbcClass jdbcClass);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Result statistics();
|
||||||
|
|
||||||
|
|
||||||
Result assrtModelList(JdbcClass jdbcClass);
|
Result assrtModelList(JdbcClass jdbcClass);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import com.zx.domain.req.AssetModel;
|
||||||
import com.zx.domain.req.DataAsset;
|
import com.zx.domain.req.DataAsset;
|
||||||
import com.zx.domain.req.JdbcClass;
|
import com.zx.domain.req.JdbcClass;
|
||||||
|
|
||||||
|
import com.zx.domain.req.Statistics;
|
||||||
import com.zx.mapper.AssetModelMapper;
|
import com.zx.mapper.AssetModelMapper;
|
||||||
import com.zx.mapper.DataAssetMapper;
|
import com.zx.mapper.DataAssetMapper;
|
||||||
import com.zx.mapper.KvtMapper;
|
import com.zx.mapper.KvtMapper;
|
||||||
|
@ -110,8 +111,10 @@ public class KvtServiceImpl implements KvtService{
|
||||||
// // 连接成功,返回成功信息
|
// // 连接成功,返回成功信息
|
||||||
// return Result.success("连接成功");
|
// return Result.success("连接成功");
|
||||||
|
|
||||||
if (jdbcClass.getType().equals("MySql")){
|
// if (jdbcClass.getType().equals("MySql")){
|
||||||
String user= jdbcClass.getUsername();
|
// String type = jdbcClass.getType();
|
||||||
|
// type="mysql";
|
||||||
|
String user= jdbcClass.getUsername();
|
||||||
String pwd= jdbcClass.getPassword();
|
String pwd= jdbcClass.getPassword();
|
||||||
String driver="com.mysql.cj.jdbc.Driver";
|
String driver="com.mysql.cj.jdbc.Driver";
|
||||||
// 构造数据库连接URL
|
// 构造数据库连接URL
|
||||||
|
@ -132,28 +135,28 @@ public class KvtServiceImpl implements KvtService{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return Result.success("连接成功");
|
return Result.success("连接成功");
|
||||||
}
|
}
|
||||||
}else {
|
// }else {
|
||||||
String user= jdbcClass.getUsername();
|
// String user= jdbcClass.getUsername();
|
||||||
String pwd= jdbcClass.getPassword();
|
// String pwd= jdbcClass.getPassword();
|
||||||
String driver="org.postgresql.Driver";
|
// String driver="org.postgresql.Driver";
|
||||||
String uel="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
// String uel="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||||
if (jdbcClass.getConnectionParam()!=null&&jdbcClass.getConnectionParam()!=""){
|
// if (jdbcClass.getConnectionParam()!=null&&jdbcClass.getConnectionParam()!=""){
|
||||||
uel=uel+"?"+jdbcClass.getConnectionParam();
|
// uel=uel+"?"+jdbcClass.getConnectionParam();
|
||||||
}
|
// }
|
||||||
Connection connection=null;
|
// Connection connection=null;
|
||||||
try {
|
// try {
|
||||||
Class.forName(driver);
|
// Class.forName(driver);
|
||||||
} catch (ClassNotFoundException e) {
|
// } catch (ClassNotFoundException e) {
|
||||||
return Result.error("连接失败");
|
// return Result.error("连接失败");
|
||||||
}
|
// }
|
||||||
try {
|
// try {
|
||||||
connection=DriverManager.getConnection(uel,pwd,user);
|
// connection=DriverManager.getConnection(uel,pwd,user);
|
||||||
connection.close();
|
// connection.close();
|
||||||
} catch (SQLException e) {
|
// } catch (SQLException e) {
|
||||||
return Result.error("链接失败");
|
// return Result.error("链接失败");
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
return Result.success("连接成功");
|
return Result.success("连接成功");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -260,115 +263,166 @@ public class KvtServiceImpl implements KvtService{
|
||||||
|
|
||||||
public List<AssetModel> getTableAssets(JdbcClass jdbcClass,String tableName){
|
public List<AssetModel> getTableAssets(JdbcClass jdbcClass,String tableName){
|
||||||
// 初始化数据库连接信息
|
// 初始化数据库连接信息
|
||||||
String user= jdbcClass.getUsername();
|
String user= jdbcClass.getUsername(); // 获取用户名
|
||||||
String pwd= jdbcClass.getPassword();
|
String pwd= jdbcClass.getPassword(); // 获取密码
|
||||||
String driver="";
|
String driver="com.mysql.cj.jdbc.Driver"; // 初始化驱动字符串
|
||||||
String url="";
|
String jdbcUrl= "jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||||
url="jdbc:"+jdbcClass.getType().toLowerCase()+"://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
// 初始化数据库连接URL
|
||||||
if (jdbcClass.getType().equals("mysql")){
|
// 根据数据库类型构造相应的URL
|
||||||
driver="com.mysql.cj.jdbc.Driver";
|
// url="jdbc:"+jdbcClass.getType().toLowerCase()+"://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||||
}else if (jdbcClass.getType().equals("oracle")){
|
// // 如果是Oracle数据库,则使用特定的URL格式
|
||||||
driver="oracle.jdbc.driver.OracleDriver";
|
// if (jdbcClass.getType().equals("oracle")){
|
||||||
}else if (jdbcClass.getType().equals("sqlserver")){
|
// url="jdbc:oracle:thin:@"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+":"+jdbcClass.getDatabaseName();
|
||||||
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
// }
|
||||||
}else if (jdbcClass.getType().equals("postgresql")){
|
// // 如果是PostgreSQL数据库
|
||||||
driver="org.postgresql.Driver";
|
// if (jdbcClass.getType().equals("postgresql")){
|
||||||
}
|
// url="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||||
if (jdbcClass.getType().equals("oracle")){
|
// }
|
||||||
url="jdbc:oracle:thin:@"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+":"+jdbcClass.getDatabaseName();
|
// // 如果是SQL Server数据库
|
||||||
}
|
// if (jdbcClass.getType().equals("sqlserver")){
|
||||||
if (jdbcClass.getType().equals("postgresql")){
|
// url="jdbc:sqlserver://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+";DatabaseName="+jdbcClass.getDatabaseName();
|
||||||
url="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
// }
|
||||||
}
|
// // 如果是MySQL数据库
|
||||||
if (jdbcClass.getType().equals("sqlserver")){
|
// if (jdbcClass.getType().equals("mysql")){
|
||||||
url="jdbc:sqlserver://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+";DatabaseName="+jdbcClass.getDatabaseName();
|
// url="jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||||
}
|
// }
|
||||||
if (jdbcClass.getType().equals("mysql")){
|
|
||||||
url="jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 定义空的connection
|
// 定义空的connection
|
||||||
Connection connection=null;
|
Connection connection=null;
|
||||||
List<AssetModel> assetsData = new ArrayList<>();
|
List<AssetModel> assetsData = new ArrayList<>(); // 用于存储表结构信息的列表
|
||||||
HashMap<String, String> hashMap = new HashMap<>();
|
HashMap<String, String> hashMap = new HashMap<>(); // 临时使用的HashMap
|
||||||
|
|
||||||
// 尝试加载驱动并建立数据库连接
|
// 尝试加载驱动并建立数据库连接
|
||||||
try {
|
try {
|
||||||
Class.forName(jdbcClass.getJdbcDriver());
|
//jdbcClass.getJdbcDriver()
|
||||||
connection=DriverManager.getConnection(url,user,pwd);
|
Class.forName(driver); // 加载驱动
|
||||||
|
connection=DriverManager.getConnection(jdbcUrl,user,pwd); // 建立连接
|
||||||
} catch (SQLException|ClassNotFoundException e) {
|
} catch (SQLException|ClassNotFoundException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e); // 处理异常
|
||||||
}
|
}
|
||||||
|
DatabaseMetaData metaData = null;
|
||||||
try {
|
try {
|
||||||
// 执行SQL查询,获取表的描述信息
|
metaData = connection.getMetaData(); // 获取元数据
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_KEY,COLUMN_DEFAULT,COLUMN_COMMENT,CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '"+jdbcClass.getDatabaseName()+"' AND TABLE_NAME = '"+tableName+"'");
|
// 查询列信息
|
||||||
ResultSet resultSet = preparedStatement.executeQuery();
|
ResultSet columns = metaData.getColumns(jdbcClass.getDatabaseName(), jdbcClass.getModeName(), tableName,"%");
|
||||||
ResultSetMetaData metaData = resultSet.getMetaData();
|
// 查询主键信息
|
||||||
|
ResultSet primaryKeys = metaData.getPrimaryKeys(jdbcClass.getDatabaseName(), jdbcClass.getModeName(), tableName);
|
||||||
// 遍历查询结果,填充TableAssets对象列表
|
String primaryKeyColumnName=""; // 用于存储主键列名
|
||||||
while (resultSet.next()){
|
// 处理主键列信息
|
||||||
AssetModel assetModel = new AssetModel();
|
while (primaryKeys.next()){
|
||||||
assetModel.setComment(resultSet.getString("COLUMN_COMMENT"));
|
primaryKeyColumnName=primaryKeys.getString("COLUMN_NAME");
|
||||||
assetModel.setName(resultSet.getString("COLUMN_NAME"));
|
}
|
||||||
if (resultSet.getString("CHARACTER_MAXIMUM_LENGTH")!=null){
|
// 处理所有列的信息
|
||||||
assetModel.setLength(resultSet.getString("CHARACTER_MAXIMUM_LENGTH"));
|
while (columns.next()){
|
||||||
}else if (resultSet.getString("NUMERIC_PRECISION")!=null){
|
AssetModel assetModel = new AssetModel(); // 创建新的AssetModel实例
|
||||||
assetModel.setLength(resultSet.getString("NUMERIC_PRECISION"));
|
// 提取并设置列信息到AssetModel
|
||||||
}else{
|
String columnName = columns.getString("COLUMN_NAME");
|
||||||
assetModel.setLength("-");
|
String typeName = columns.getString("TYPE_NAME");
|
||||||
}
|
int columnSize = columns.getInt("COLUMN_SIZE");
|
||||||
if (resultSet.getString("NUMERIC_SCALE")!=null){
|
int decimalDigits = columns.getInt("DECIMAL_DIGITS");
|
||||||
assetModel.setDecimalPlaces(resultSet.getString("NUMERIC_SCALE"));
|
String isNullable = columns.getString("IS_NULLABLE");
|
||||||
}else{
|
String columnDef = columns.getString("COLUMN_DEF");
|
||||||
assetModel.setDecimalPlaces("-");
|
String remarks = columns.getString("REMARKS");
|
||||||
}
|
assetModel.setCreateTime(new Date());
|
||||||
|
assetModel.setCreateBy(SecurityUtils.getUsername());
|
||||||
//是否不可为空
|
assetModel.setLength(String.valueOf(columnSize));
|
||||||
if (resultSet.getString("IS_NULLABLE").equals("NO")){
|
assetModel.setDecimalPlaces(String.valueOf(decimalDigits));
|
||||||
assetModel.setIsNull("N");
|
assetModel.setName(columnDef);
|
||||||
}else{
|
assetModel.setType(typeName);
|
||||||
assetModel.setIsNull("Y");
|
assetModel.setMappingType(hashMap.get(columnName));
|
||||||
}
|
|
||||||
//是否有默认值
|
|
||||||
if (resultSet.getString("COLUMN_DEFAULT")!=null){
|
|
||||||
assetModel.setDefaultValue(resultSet.getString("COLUMN_DEFAULT"));
|
|
||||||
}else{
|
|
||||||
assetModel.setDefaultValue("-");
|
|
||||||
}
|
|
||||||
assetModel.setIsDict("");
|
|
||||||
assetModel.setDictKey("");
|
assetModel.setDictKey("");
|
||||||
assetModel.setType(resultSet.getString("DATA_TYPE"));
|
assetModel.setIsDict("");
|
||||||
//是否主键
|
assetModel.setIsNull(isNullable.substring(0,1));
|
||||||
if ("PRI".equals(resultSet.getString("COLUMN_KEY"))){
|
// 标记是否为主键
|
||||||
|
if (columnName.equals(primaryKeyColumnName)){
|
||||||
assetModel.setIsPrimaryKey("Y");
|
assetModel.setIsPrimaryKey("Y");
|
||||||
}else{
|
} else {
|
||||||
assetModel.setIsPrimaryKey("N");
|
assetModel.setIsPrimaryKey("N");
|
||||||
}
|
}
|
||||||
assetModel.setCreateBy(SecurityUtils.getUsername());
|
// 设置列注释
|
||||||
assetModel.setCreateTime(new Date());
|
if (remarks==null||remarks==""){
|
||||||
assetModel.setMappingType("String");
|
assetModel.setComment("-");
|
||||||
assetsData.add(assetModel);
|
}else {
|
||||||
|
assetModel.setComment(remarks);
|
||||||
|
}
|
||||||
|
// 设置默认值
|
||||||
|
if (columnDef==null||columnDef==""){
|
||||||
|
assetModel.setDefaultValue("-");
|
||||||
|
}else {
|
||||||
|
assetModel.setDefaultValue(columnDef);
|
||||||
|
}
|
||||||
|
assetsData.add(assetModel); // 将处理好的信息添加到列表中
|
||||||
}
|
}
|
||||||
preparedStatement.close();
|
// 关闭资源
|
||||||
} catch (SQLException e) {
|
primaryKeys.close();
|
||||||
e.printStackTrace();
|
connection.close();
|
||||||
|
columns.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
throw new RuntimeException(ex); // 处理异常
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// // 遍历查询结果,填充TableAssets对象列表
|
||||||
|
// while (resultSet.next()){
|
||||||
|
// AssetModel assetModel = new AssetModel();
|
||||||
|
// assetModel.setComment(resultSet.getString("COLUMN_COMMENT"));
|
||||||
|
// assetModel.setName(resultSet.getString("COLUMN_NAME"));
|
||||||
|
// if (resultSet.getString("CHARACTER_MAXIMUM_LENGTH")!=null){
|
||||||
|
// assetModel.setLength(resultSet.getString("CHARACTER_MAXIMUM_LENGTH"));
|
||||||
|
// }else if (resultSet.getString("NUMERIC_PRECISION")!=null){
|
||||||
|
// assetModel.setLength(resultSet.getString("NUMERIC_PRECISION"));
|
||||||
|
// }else{
|
||||||
|
// assetModel.setLength("-");
|
||||||
|
// }
|
||||||
|
// if (resultSet.getString("NUMERIC_SCALE")!=null){
|
||||||
|
// assetModel.setDecimalPlaces(resultSet.getString("NUMERIC_SCALE"));
|
||||||
|
// }else{
|
||||||
|
// assetModel.setDecimalPlaces("-");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// //是否不可为空
|
||||||
|
// if (resultSet.getString("IS_NULLABLE").equals("NO")){
|
||||||
|
// assetModel.setIsNull("N");
|
||||||
|
// }else{
|
||||||
|
// assetModel.setIsNull("Y");
|
||||||
|
// }
|
||||||
|
// //是否有默认值
|
||||||
|
// if (resultSet.getString("COLUMN_DEFAULT")!=null){
|
||||||
|
// assetModel.setDefaultValue(resultSet.getString("COLUMN_DEFAULT"));
|
||||||
|
// }else{
|
||||||
|
// assetModel.setDefaultValue("-");
|
||||||
|
// }
|
||||||
|
// assetModel.setIsDict("");
|
||||||
|
// assetModel.setDictKey("");
|
||||||
|
// assetModel.setType(resultSet.getString("DATA_TYPE"));
|
||||||
|
// //是否主键
|
||||||
|
// if ("PRI".equals(resultSet.getString("COLUMN_KEY"))){
|
||||||
|
// assetModel.setIsPrimaryKey("Y");
|
||||||
|
// }else{
|
||||||
|
// assetModel.setIsPrimaryKey("N");
|
||||||
|
// }
|
||||||
|
// assetModel.setCreateBy(SecurityUtils.getUsername());
|
||||||
|
// assetModel.setCreateTime(new Date());
|
||||||
|
// assetModel.setMappingType("String");
|
||||||
|
// assetsData.add(assetModel);
|
||||||
|
// }
|
||||||
|
// preparedStatement.close();
|
||||||
|
// } catch (SQLException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
return assetsData;
|
return assetsData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public AssetsData getAssets(JdbcClass jdbcClass){
|
public AssetsData getAssets(JdbcClass jdbcClass){
|
||||||
String user = jdbcClass.getUsername();
|
String jdbcUrl="";
|
||||||
String password = jdbcClass.getPassword();
|
String user="";
|
||||||
String jdbcDriver = "com.mysql.cj.jdbc.Driver";
|
String password="";
|
||||||
String jdbcUrl = "jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
|
||||||
Connection conn = null;
|
|
||||||
List<Map<String, DataKvt>> kvtList = new ArrayList<>();
|
List<Map<String, DataKvt>> kvtList = new ArrayList<>();
|
||||||
|
Connection conn=null;
|
||||||
HashMap<String, String> map = new HashMap<>();
|
HashMap<String, String> map = new HashMap<>();
|
||||||
List<AssetModel> tableAssets = getTableAssets(jdbcClass,jdbcClass.getTableName());
|
List<AssetModel> tableAssets = getTableAssets(jdbcClass,jdbcClass.getTableName());
|
||||||
try {
|
try {
|
||||||
Class.forName(jdbcDriver);
|
Class.forName(jdbcClass.getJdbcDriver());
|
||||||
conn = DriverManager.getConnection(jdbcUrl, user, password);
|
conn = DriverManager.getConnection(jdbcUrl, user, password);
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement("select * from "+ jdbcClass.getTableName()+"+where 1=1");
|
PreparedStatement preparedStatement = conn.prepareStatement("select * from "+ jdbcClass.getTableName()+"+where 1=1");
|
||||||
ResultSet resultSet = preparedStatement.executeQuery();
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
@ -405,6 +459,12 @@ public class KvtServiceImpl implements KvtService{
|
||||||
public void method(JdbcClass jdbcClass){
|
public void method(JdbcClass jdbcClass){
|
||||||
String user=jdbcClass.getUsername();
|
String user=jdbcClass.getUsername();
|
||||||
String pwd=jdbcClass.getPassword();
|
String pwd=jdbcClass.getPassword();
|
||||||
|
String jdbc = "com.mysql.cj.jdbc.Driver";
|
||||||
|
String jdbcUrl = "jdbc:mysql://" + jdbcClass.getLinkAddress() + ":" + jdbcClass.getPort() + "/" + jdbcClass.getDatabaseName();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -414,18 +474,32 @@ public class KvtServiceImpl implements KvtService{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result synchronousData(JdbcClass jdbcClass) {
|
public Result synchronousData(JdbcClass jdbcClass) {
|
||||||
|
// 构造查询MySQL数据库中表信息的SQL语句
|
||||||
String mysql = "SELECT TABLE_NAME t_name,TABLE_COMMENT table_comment,TABLE_ROWS table_rows,(SELECT count(*) FROM INFORMATION_SCHEMA.columns WHERE TABLE_SCHEMA = '"+jdbcClass.getDatabaseName()+"' and TABLE_NAME=t_name) fields FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='"+jdbcClass.getDatabaseName()+"'";
|
String mysql = "SELECT TABLE_NAME t_name,TABLE_COMMENT table_comment,TABLE_ROWS table_rows,(SELECT count(*) FROM INFORMATION_SCHEMA.columns WHERE TABLE_SCHEMA = '"+jdbcClass.getDatabaseName()+"' and TABLE_NAME=t_name) fields FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='"+jdbcClass.getDatabaseName()+"'";
|
||||||
|
|
||||||
|
// 从JdbcClass实例获取数据库连接所需的用户、密码和驱动信息
|
||||||
String user = jdbcClass.getUsername();
|
String user = jdbcClass.getUsername();
|
||||||
String pwd = jdbcClass.getPassword();
|
String pwd = jdbcClass.getPassword();
|
||||||
String jdbc = "com.mysql.cj.jdbc.Driver";
|
String jdbc = "com.mysql.cj.jdbc.Driver";
|
||||||
|
// 构造数据库连接的URL
|
||||||
String jdbcUrl = "jdbc:mysql://" + jdbcClass.getLinkAddress() + ":" + jdbcClass.getPort() + "/" + jdbcClass.getDatabaseName();
|
String jdbcUrl = "jdbc:mysql://" + jdbcClass.getLinkAddress() + ":" + jdbcClass.getPort() + "/" + jdbcClass.getDatabaseName();
|
||||||
|
// 声明数据库连接变量
|
||||||
Connection connection = null;
|
Connection connection = null;
|
||||||
|
// 初始化数据资产列表
|
||||||
ArrayList<DataAsset> dataAssets = new ArrayList<>();
|
ArrayList<DataAsset> dataAssets = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
|
// 加载数据库驱动
|
||||||
Class.forName(jdbc);
|
Class.forName(jdbc);
|
||||||
|
|
||||||
|
// 获取数据库连接
|
||||||
connection = DriverManager.getConnection(jdbcUrl, user, pwd);
|
connection = DriverManager.getConnection(jdbcUrl, user, pwd);
|
||||||
|
|
||||||
|
// 准备SQL语句并执行查询
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement(mysql);
|
PreparedStatement preparedStatement = connection.prepareStatement(mysql);
|
||||||
|
//在Java的数据库编程中,PreparedStatement是一种高效的执行SQL语句的方式。
|
||||||
|
// 其中,executeQuery()是PreparedStatement类中的一个方法,用于执行SELECT语句并返回查询结果。
|
||||||
ResultSet resultSet = preparedStatement.executeQuery();
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
// 遍历查询结果,构造数据资产对象并填充信息
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
DataAsset dataAsset = new DataAsset();
|
DataAsset dataAsset = new DataAsset();
|
||||||
dataAsset.setTableName(resultSet.getString("t_name"));
|
dataAsset.setTableName(resultSet.getString("t_name"));
|
||||||
|
@ -437,19 +511,32 @@ public class KvtServiceImpl implements KvtService{
|
||||||
dataAsset.setCreateTime(new java.util.Date());
|
dataAsset.setCreateTime(new java.util.Date());
|
||||||
dataAssets.add(dataAsset);
|
dataAssets.add(dataAsset);
|
||||||
}
|
}
|
||||||
|
// 批量插入数据资产信息
|
||||||
dataAssetMapper.batchInsert(dataAssets);
|
dataAssetMapper.batchInsert(dataAssets);
|
||||||
|
// 遍历数据资产列表,为每个表获取详细的资产信息,并批量插入
|
||||||
for (DataAsset dataAsset : dataAssets) {
|
for (DataAsset dataAsset : dataAssets) {
|
||||||
List<AssetModel> tableAssets = getTableAssets(jdbcClass, dataAsset.getTableName());
|
List<AssetModel> tableAssets = getTableAssets(jdbcClass, dataAsset.getTableName());
|
||||||
tableAssets.stream().forEach(assetModel -> assetModel.setDataAssetId(dataAsset.getId()));
|
tableAssets.stream().forEach(assetModel -> assetModel.setDataAssetId(dataAsset.getId()));
|
||||||
assetModelMapper.batchInsert(tableAssets);
|
assetModelMapper.batchInsert(tableAssets);
|
||||||
}
|
}
|
||||||
} catch ( SQLException | ClassNotFoundException e) {
|
} catch ( SQLException | ClassNotFoundException e) {
|
||||||
|
// 抛出运行时异常,封装SQLException和ClassNotFoundException
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 返回操作成功的结果
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public Result dataAssetList(DataSource dataSource) {
|
||||||
|
// DataAsset dataAsset = new DataAsset();
|
||||||
|
// dataAsset.setDataSourceId(dataSource.getId());
|
||||||
|
// List<DataAsset> dataAssets = dataAssetMapper.selectDataAssetList(dataAsset);
|
||||||
|
// return Result.success(dataAssets);
|
||||||
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result dattaList (JdbcClass jdbcClass){
|
public Result dattaList (JdbcClass jdbcClass){
|
||||||
DataAsset dataAsset = new DataAsset();
|
DataAsset dataAsset = new DataAsset();
|
||||||
|
@ -458,15 +545,31 @@ public class KvtServiceImpl implements KvtService{
|
||||||
return Result.success(dataAssets);
|
return Result.success(dataAssets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result statistics() {
|
||||||
|
//查询所有书库源
|
||||||
|
List<JdbcClass> dataAssets = kvtMapper.selectList(new JdbcClass());
|
||||||
|
//获取所有的数据主键
|
||||||
|
List<Long> list = dataAssets.stream().map(JdbcClass::getId).toList();
|
||||||
|
List<DataAsset> dataAssets1 = dataAssetMapper.selectDataAssetBatchId(list);
|
||||||
|
Statistics statistics = new Statistics();
|
||||||
|
statistics.setDataAsset(Long.valueOf(dataAssets.size()));
|
||||||
|
long sum1;
|
||||||
|
long sum2=0;
|
||||||
|
sum1=dataAssets1.stream().mapToLong(value -> Long.valueOf(value.getFields())).sum();
|
||||||
|
sum2=dataAssets1.stream().mapToLong(value -> Long.valueOf(value.getTableCount())).sum();
|
||||||
|
statistics.setAssetModel(sum1);
|
||||||
|
statistics.setDataModel(sum2);
|
||||||
|
return Result.success(statistics);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result assrtModelList (JdbcClass jdbcClass){
|
public Result assrtModelList(JdbcClass jdbcClass){
|
||||||
AssetModel assetModel = new AssetModel();
|
AssetModel assetModel = new AssetModel();
|
||||||
assetModel.setDataAssetId(jdbcClass.getId());
|
assetModel.setDataAssetId(jdbcClass.getId());
|
||||||
List<AssetModel> assetModels = assetModelMapper.selectAssetModelList(assetModel);
|
List<AssetModel> assetModels = assetModelMapper.selectAssetModelList(assetModel);
|
||||||
return Result.success(assetModels);
|
return Result.success(assetModels);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,11 @@
|
||||||
<result property="updateBy" column="update_by" />
|
<result property="updateBy" column="update_by" />
|
||||||
<result property="updateTime" column="update_time" />
|
<result property="updateTime" column="update_time" />
|
||||||
<result property="remark" column="remark" />
|
<result property="remark" column="remark" />
|
||||||
|
<result property="jdbcDriver" column="jdbc_driver" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectDataSourceVo">
|
<sql id="selectDataSourceVo">
|
||||||
select id, data_source_name, link_address, port, database_name, username, password, create_by, create_time, update_by, update_time, remark from jdbc
|
select id, data_source_name, link_address, port, database_name, username, password, create_by, create_time, update_by, update_time, remark,jdbc_driver from jdbc
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectList" parameterType="com.zx.domain.req.JdbcClass" resultMap="DataSourceResult">
|
<select id="selectList" parameterType="com.zx.domain.req.JdbcClass" resultMap="DataSourceResult">
|
||||||
|
@ -54,6 +55,7 @@ select id, data_source_name, link_address, port, database_name, username, passwo
|
||||||
<if test="updateBy != null">update_by,</if>
|
<if test="updateBy != null">update_by,</if>
|
||||||
<if test="updateTime != null">update_time,</if>
|
<if test="updateTime != null">update_time,</if>
|
||||||
<if test="remark != null">remark,</if>
|
<if test="remark != null">remark,</if>
|
||||||
|
<if test="jdbcDriver != null">jdbc_driver,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="dataSourceName != null">#{dataSourceName},</if>
|
<if test="dataSourceName != null">#{dataSourceName},</if>
|
||||||
|
@ -67,6 +69,8 @@ select id, data_source_name, link_address, port, database_name, username, passwo
|
||||||
<if test="updateBy != null">#{updateBy},</if>
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
<if test="updateTime != null">#{updateTime},</if>
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
<if test="remark != null">#{remark},</if>
|
<if test="remark != null">#{remark},</if>
|
||||||
|
<if test="jdbcDriver != null">jdbc_driver = #{jdbcDriver},</if>
|
||||||
|
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
@ -84,6 +88,7 @@ select id, data_source_name, link_address, port, database_name, username, passwo
|
||||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
|
<if test="jdbcDriver != null and jdbcDriver != ''"> and jdbc_driver like concat('%', #{jdbcDriver}, '%')</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
@ -98,4 +103,6 @@ select id, data_source_name, link_address, port, database_name, username, passwo
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
Loading…
Reference in New Issue