feat:增加了oracle,postgresql,sqlserver()
parent
aeca277369
commit
0215b0cb5e
|
@ -22,5 +22,28 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||
public class MuYuKVTApplication {
|
||||
public static void main(String[] args) {
|
||||
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;
|
||||
|
||||
import com.zx.domain.req.DataAsset;
|
||||
import feign.Param;
|
||||
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;
|
||||
|
||||
/**
|
||||
|
@ -64,5 +61,8 @@ public interface DataAssetMapper {
|
|||
*/
|
||||
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;
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.zx.domain.req.DataAsset;
|
||||
import com.zx.domain.req.JdbcClass;
|
||||
import feign.Param;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -49,4 +51,7 @@ public interface KvtMapper {
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -65,5 +65,10 @@ public interface KvtService {
|
|||
|
||||
Result dattaList(JdbcClass jdbcClass);
|
||||
|
||||
|
||||
|
||||
Result statistics();
|
||||
|
||||
|
||||
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.JdbcClass;
|
||||
|
||||
import com.zx.domain.req.Statistics;
|
||||
import com.zx.mapper.AssetModelMapper;
|
||||
import com.zx.mapper.DataAssetMapper;
|
||||
import com.zx.mapper.KvtMapper;
|
||||
|
@ -110,8 +111,10 @@ public class KvtServiceImpl implements KvtService{
|
|||
// // 连接成功,返回成功信息
|
||||
// return Result.success("连接成功");
|
||||
|
||||
if (jdbcClass.getType().equals("MySql")){
|
||||
String user= jdbcClass.getUsername();
|
||||
// if (jdbcClass.getType().equals("MySql")){
|
||||
// String type = jdbcClass.getType();
|
||||
// type="mysql";
|
||||
String user= jdbcClass.getUsername();
|
||||
String pwd= jdbcClass.getPassword();
|
||||
String driver="com.mysql.cj.jdbc.Driver";
|
||||
// 构造数据库连接URL
|
||||
|
@ -132,28 +135,28 @@ public class KvtServiceImpl implements KvtService{
|
|||
} catch (Exception e) {
|
||||
return Result.success("连接成功");
|
||||
}
|
||||
}else {
|
||||
String user= jdbcClass.getUsername();
|
||||
String pwd= jdbcClass.getPassword();
|
||||
String driver="org.postgresql.Driver";
|
||||
String uel="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
if (jdbcClass.getConnectionParam()!=null&&jdbcClass.getConnectionParam()!=""){
|
||||
uel=uel+"?"+jdbcClass.getConnectionParam();
|
||||
}
|
||||
Connection connection=null;
|
||||
try {
|
||||
Class.forName(driver);
|
||||
} catch (ClassNotFoundException e) {
|
||||
return Result.error("连接失败");
|
||||
}
|
||||
try {
|
||||
connection=DriverManager.getConnection(uel,pwd,user);
|
||||
connection.close();
|
||||
} catch (SQLException e) {
|
||||
return Result.error("链接失败");
|
||||
}
|
||||
// }else {
|
||||
// String user= jdbcClass.getUsername();
|
||||
// String pwd= jdbcClass.getPassword();
|
||||
// String driver="org.postgresql.Driver";
|
||||
// String uel="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
// if (jdbcClass.getConnectionParam()!=null&&jdbcClass.getConnectionParam()!=""){
|
||||
// uel=uel+"?"+jdbcClass.getConnectionParam();
|
||||
// }
|
||||
// Connection connection=null;
|
||||
// try {
|
||||
// Class.forName(driver);
|
||||
// } catch (ClassNotFoundException e) {
|
||||
// return Result.error("连接失败");
|
||||
// }
|
||||
// try {
|
||||
// connection=DriverManager.getConnection(uel,pwd,user);
|
||||
// connection.close();
|
||||
// } catch (SQLException e) {
|
||||
// return Result.error("链接失败");
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
return Result.success("连接成功");
|
||||
|
||||
}
|
||||
|
@ -260,115 +263,166 @@ public class KvtServiceImpl implements KvtService{
|
|||
|
||||
public List<AssetModel> getTableAssets(JdbcClass jdbcClass,String tableName){
|
||||
// 初始化数据库连接信息
|
||||
String user= jdbcClass.getUsername();
|
||||
String pwd= jdbcClass.getPassword();
|
||||
String driver="";
|
||||
String url="";
|
||||
url="jdbc:"+jdbcClass.getType().toLowerCase()+"://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
if (jdbcClass.getType().equals("mysql")){
|
||||
driver="com.mysql.cj.jdbc.Driver";
|
||||
}else if (jdbcClass.getType().equals("oracle")){
|
||||
driver="oracle.jdbc.driver.OracleDriver";
|
||||
}else if (jdbcClass.getType().equals("sqlserver")){
|
||||
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
||||
}else if (jdbcClass.getType().equals("postgresql")){
|
||||
driver="org.postgresql.Driver";
|
||||
}
|
||||
if (jdbcClass.getType().equals("oracle")){
|
||||
url="jdbc:oracle:thin:@"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+":"+jdbcClass.getDatabaseName();
|
||||
}
|
||||
if (jdbcClass.getType().equals("postgresql")){
|
||||
url="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
}
|
||||
if (jdbcClass.getType().equals("sqlserver")){
|
||||
url="jdbc:sqlserver://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+";DatabaseName="+jdbcClass.getDatabaseName();
|
||||
}
|
||||
if (jdbcClass.getType().equals("mysql")){
|
||||
url="jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
}
|
||||
|
||||
|
||||
String user= jdbcClass.getUsername(); // 获取用户名
|
||||
String pwd= jdbcClass.getPassword(); // 获取密码
|
||||
String driver="com.mysql.cj.jdbc.Driver"; // 初始化驱动字符串
|
||||
String jdbcUrl= "jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
// 初始化数据库连接URL
|
||||
// 根据数据库类型构造相应的URL
|
||||
// url="jdbc:"+jdbcClass.getType().toLowerCase()+"://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
// // 如果是Oracle数据库,则使用特定的URL格式
|
||||
// if (jdbcClass.getType().equals("oracle")){
|
||||
// url="jdbc:oracle:thin:@"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+":"+jdbcClass.getDatabaseName();
|
||||
// }
|
||||
// // 如果是PostgreSQL数据库
|
||||
// if (jdbcClass.getType().equals("postgresql")){
|
||||
// url="jdbc:postgresql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
// }
|
||||
// // 如果是SQL Server数据库
|
||||
// if (jdbcClass.getType().equals("sqlserver")){
|
||||
// url="jdbc:sqlserver://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+";DatabaseName="+jdbcClass.getDatabaseName();
|
||||
// }
|
||||
// // 如果是MySQL数据库
|
||||
// if (jdbcClass.getType().equals("mysql")){
|
||||
// url="jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
// }
|
||||
// 定义空的connection
|
||||
Connection connection=null;
|
||||
List<AssetModel> assetsData = new ArrayList<>();
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
List<AssetModel> assetsData = new ArrayList<>(); // 用于存储表结构信息的列表
|
||||
HashMap<String, String> hashMap = new HashMap<>(); // 临时使用的HashMap
|
||||
|
||||
// 尝试加载驱动并建立数据库连接
|
||||
try {
|
||||
Class.forName(jdbcClass.getJdbcDriver());
|
||||
connection=DriverManager.getConnection(url,user,pwd);
|
||||
//jdbcClass.getJdbcDriver()
|
||||
Class.forName(driver); // 加载驱动
|
||||
connection=DriverManager.getConnection(jdbcUrl,user,pwd); // 建立连接
|
||||
} catch (SQLException|ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
throw new RuntimeException(e); // 处理异常
|
||||
}
|
||||
DatabaseMetaData metaData = null;
|
||||
try {
|
||||
// 执行SQL查询,获取表的描述信息
|
||||
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();
|
||||
ResultSetMetaData metaData = resultSet.getMetaData();
|
||||
|
||||
// 遍历查询结果,填充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("");
|
||||
metaData = connection.getMetaData(); // 获取元数据
|
||||
// 查询列信息
|
||||
ResultSet columns = metaData.getColumns(jdbcClass.getDatabaseName(), jdbcClass.getModeName(), tableName,"%");
|
||||
// 查询主键信息
|
||||
ResultSet primaryKeys = metaData.getPrimaryKeys(jdbcClass.getDatabaseName(), jdbcClass.getModeName(), tableName);
|
||||
String primaryKeyColumnName=""; // 用于存储主键列名
|
||||
// 处理主键列信息
|
||||
while (primaryKeys.next()){
|
||||
primaryKeyColumnName=primaryKeys.getString("COLUMN_NAME");
|
||||
}
|
||||
// 处理所有列的信息
|
||||
while (columns.next()){
|
||||
AssetModel assetModel = new AssetModel(); // 创建新的AssetModel实例
|
||||
// 提取并设置列信息到AssetModel
|
||||
String columnName = columns.getString("COLUMN_NAME");
|
||||
String typeName = columns.getString("TYPE_NAME");
|
||||
int columnSize = columns.getInt("COLUMN_SIZE");
|
||||
int decimalDigits = columns.getInt("DECIMAL_DIGITS");
|
||||
String isNullable = columns.getString("IS_NULLABLE");
|
||||
String columnDef = columns.getString("COLUMN_DEF");
|
||||
String remarks = columns.getString("REMARKS");
|
||||
assetModel.setCreateTime(new Date());
|
||||
assetModel.setCreateBy(SecurityUtils.getUsername());
|
||||
assetModel.setLength(String.valueOf(columnSize));
|
||||
assetModel.setDecimalPlaces(String.valueOf(decimalDigits));
|
||||
assetModel.setName(columnDef);
|
||||
assetModel.setType(typeName);
|
||||
assetModel.setMappingType(hashMap.get(columnName));
|
||||
assetModel.setDictKey("");
|
||||
assetModel.setType(resultSet.getString("DATA_TYPE"));
|
||||
//是否主键
|
||||
if ("PRI".equals(resultSet.getString("COLUMN_KEY"))){
|
||||
assetModel.setIsDict("");
|
||||
assetModel.setIsNull(isNullable.substring(0,1));
|
||||
// 标记是否为主键
|
||||
if (columnName.equals(primaryKeyColumnName)){
|
||||
assetModel.setIsPrimaryKey("Y");
|
||||
}else{
|
||||
} else {
|
||||
assetModel.setIsPrimaryKey("N");
|
||||
}
|
||||
assetModel.setCreateBy(SecurityUtils.getUsername());
|
||||
assetModel.setCreateTime(new Date());
|
||||
assetModel.setMappingType("String");
|
||||
assetsData.add(assetModel);
|
||||
// 设置列注释
|
||||
if (remarks==null||remarks==""){
|
||||
assetModel.setComment("-");
|
||||
}else {
|
||||
assetModel.setComment(remarks);
|
||||
}
|
||||
// 设置默认值
|
||||
if (columnDef==null||columnDef==""){
|
||||
assetModel.setDefaultValue("-");
|
||||
}else {
|
||||
assetModel.setDefaultValue(columnDef);
|
||||
}
|
||||
assetsData.add(assetModel); // 将处理好的信息添加到列表中
|
||||
}
|
||||
preparedStatement.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
// 关闭资源
|
||||
primaryKeys.close();
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
public AssetsData getAssets(JdbcClass jdbcClass){
|
||||
String user = jdbcClass.getUsername();
|
||||
String password = jdbcClass.getPassword();
|
||||
String jdbcDriver = "com.mysql.cj.jdbc.Driver";
|
||||
String jdbcUrl = "jdbc:mysql://"+jdbcClass.getLinkAddress()+":"+jdbcClass.getPort()+"/"+jdbcClass.getDatabaseName();
|
||||
Connection conn = null;
|
||||
String jdbcUrl="";
|
||||
String user="";
|
||||
String password="";
|
||||
List<Map<String, DataKvt>> kvtList = new ArrayList<>();
|
||||
Connection conn=null;
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
List<AssetModel> tableAssets = getTableAssets(jdbcClass,jdbcClass.getTableName());
|
||||
try {
|
||||
Class.forName(jdbcDriver);
|
||||
Class.forName(jdbcClass.getJdbcDriver());
|
||||
conn = DriverManager.getConnection(jdbcUrl, user, password);
|
||||
PreparedStatement preparedStatement = conn.prepareStatement("select * from "+ jdbcClass.getTableName()+"+where 1=1");
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
|
@ -405,6 +459,12 @@ public class KvtServiceImpl implements KvtService{
|
|||
public void method(JdbcClass jdbcClass){
|
||||
String user=jdbcClass.getUsername();
|
||||
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
|
||||
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()+"'";
|
||||
|
||||
// 从JdbcClass实例获取数据库连接所需的用户、密码和驱动信息
|
||||
String user = jdbcClass.getUsername();
|
||||
String pwd = jdbcClass.getPassword();
|
||||
String jdbc = "com.mysql.cj.jdbc.Driver";
|
||||
// 构造数据库连接的URL
|
||||
String jdbcUrl = "jdbc:mysql://" + jdbcClass.getLinkAddress() + ":" + jdbcClass.getPort() + "/" + jdbcClass.getDatabaseName();
|
||||
// 声明数据库连接变量
|
||||
Connection connection = null;
|
||||
// 初始化数据资产列表
|
||||
ArrayList<DataAsset> dataAssets = new ArrayList<>();
|
||||
try {
|
||||
// 加载数据库驱动
|
||||
Class.forName(jdbc);
|
||||
|
||||
// 获取数据库连接
|
||||
connection = DriverManager.getConnection(jdbcUrl, user, pwd);
|
||||
|
||||
// 准备SQL语句并执行查询
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(mysql);
|
||||
//在Java的数据库编程中,PreparedStatement是一种高效的执行SQL语句的方式。
|
||||
// 其中,executeQuery()是PreparedStatement类中的一个方法,用于执行SELECT语句并返回查询结果。
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
// 遍历查询结果,构造数据资产对象并填充信息
|
||||
while (resultSet.next()) {
|
||||
DataAsset dataAsset = new DataAsset();
|
||||
dataAsset.setTableName(resultSet.getString("t_name"));
|
||||
|
@ -437,19 +511,32 @@ public class KvtServiceImpl implements KvtService{
|
|||
dataAsset.setCreateTime(new java.util.Date());
|
||||
dataAssets.add(dataAsset);
|
||||
}
|
||||
// 批量插入数据资产信息
|
||||
dataAssetMapper.batchInsert(dataAssets);
|
||||
// 遍历数据资产列表,为每个表获取详细的资产信息,并批量插入
|
||||
for (DataAsset dataAsset : dataAssets) {
|
||||
List<AssetModel> tableAssets = getTableAssets(jdbcClass, dataAsset.getTableName());
|
||||
tableAssets.stream().forEach(assetModel -> assetModel.setDataAssetId(dataAsset.getId()));
|
||||
assetModelMapper.batchInsert(tableAssets);
|
||||
}
|
||||
} catch ( SQLException | ClassNotFoundException e) {
|
||||
// 抛出运行时异常,封装SQLException和ClassNotFoundException
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
// 返回操作成功的结果
|
||||
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
|
||||
public Result dattaList (JdbcClass jdbcClass){
|
||||
DataAsset dataAsset = new DataAsset();
|
||||
|
@ -458,15 +545,31 @@ public class KvtServiceImpl implements KvtService{
|
|||
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
|
||||
public Result assrtModelList (JdbcClass jdbcClass){
|
||||
public Result assrtModelList(JdbcClass jdbcClass){
|
||||
AssetModel assetModel = new AssetModel();
|
||||
assetModel.setDataAssetId(jdbcClass.getId());
|
||||
List<AssetModel> assetModels = assetModelMapper.selectAssetModelList(assetModel);
|
||||
return Result.success(assetModels);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -17,10 +17,11 @@
|
|||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="jdbcDriver" column="jdbc_driver" />
|
||||
</resultMap>
|
||||
|
||||
<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>
|
||||
|
||||
<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="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="jdbcDriver != null">jdbc_driver,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<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="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="jdbcDriver != null">jdbc_driver = #{jdbcDriver},</if>
|
||||
|
||||
</trim>
|
||||
</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="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="jdbcDriver != null and jdbcDriver != ''"> and jdbc_driver like concat('%', #{jdbcDriver}, '%')</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
@ -98,4 +103,6 @@ select id, data_source_name, link_address, port, database_name, username, passwo
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
Loading…
Reference in New Issue