|
@@ -25,6 +25,7 @@ import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -533,8 +534,6 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
|
descriptionList.stream().forEach(f -> tableInfoMapper.addOracleTableDescription(f));
|
|
|
}
|
|
|
|
|
|
- @Value("${parameter.ip.MAIN_DICTIONARY_IP}")
|
|
|
- private String dictIp;
|
|
|
|
|
|
// @Override
|
|
|
// public int initDatabase(DataSource dataSource) {
|
|
@@ -612,66 +611,104 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
|
// }
|
|
|
|
|
|
|
|
|
- @Override
|
|
|
- public AjaxResult initDatabase(DataSource dataSource){
|
|
|
+ // 查询字典中的基础库模版信息
|
|
|
+ @Value("${parameter.ip.MAIN_DICTIONARY_IP}")
|
|
|
+ private String dictIp;
|
|
|
|
|
|
+ @Override
|
|
|
+ public AjaxResult initDatabase(DataSource dataSource) {
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
//创建连接
|
|
|
Connection con;
|
|
|
Statement st;
|
|
|
String driverName = null;
|
|
|
String dbURL = null;
|
|
|
- String userName = dataSource.getUsername();;
|
|
|
+ String userName = dataSource.getUsername();
|
|
|
String userPwd = dataSource.getPassword();
|
|
|
|
|
|
+ String foundationDriverName = null;
|
|
|
+ String foundationDBURL = null;
|
|
|
+ String foundationUserName = dataSource.getUsername();
|
|
|
+ String foundationUserPwd = dataSource.getPassword();
|
|
|
+
|
|
|
+
|
|
|
//查询数据库sql
|
|
|
String showDatabaseSql = null;
|
|
|
//创建数据库
|
|
|
String createDatabaseSql = null;
|
|
|
|
|
|
- //判断租户是哪种数据源,初始化对应创建信息
|
|
|
- if(dataSource.getDatabaseType().equals(DataSourceType.MYSQL.getDataSourceName())){
|
|
|
- driverName = LoadDriverConstants.MYSQL;
|
|
|
- dbURL = "jdbc:mysql://"+dataSource.getDatabaseIp()+":"+dataSource.getPortNumber();
|
|
|
- showDatabaseSql = "show DATABASES";
|
|
|
- createDatabaseSql = "CREATE DATABASE IF NOT EXISTS `" + dataSource.getDatabaseName() + "` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;";
|
|
|
- }else if(dataSource.getDatabaseType().equals(DataSourceType.SQLSERVER.getDataSourceName())){
|
|
|
- driverName = LoadDriverConstants.SQLSERVER;
|
|
|
- dbURL = "jdbc:sqlserver://"+dataSource.getDatabaseIp()+":"+dataSource.getPortNumber()+";DatabaseName=;trustServerCertificate=true;";
|
|
|
- showDatabaseSql = "select name from sys.databases";
|
|
|
- createDatabaseSql = "CREATE DATABASE "+dataSource.getDatabaseName();
|
|
|
- }else if(dataSource.getDatabaseType().equals(DataSourceType.DM.getDataSourceName())){
|
|
|
- driverName = LoadDriverConstants.DM;
|
|
|
- dbURL = "jdbc:dm://"+dataSource.getDatabaseIp()+":"+dataSource.getPortNumber();
|
|
|
- showDatabaseSql = "select name from sysobjects where TYPE$='sch' and SUBTYPE$ is null";
|
|
|
- createDatabaseSql = "CREATE SCHEMA "+dataSource.getDatabaseName();
|
|
|
- }else if(dataSource.getDatabaseType().equals(DataSourceType.ORACLE.getDataSourceName())){
|
|
|
- driverName = LoadDriverConstants.ORACLE;
|
|
|
- dbURL = "jdbc:oracle:thin:@"+dataSource.getDatabaseIp()+":"+dataSource.getPortNumber();
|
|
|
- }
|
|
|
+ //判断数据源,初始化对应创建信息
|
|
|
+ switch (dataSource.getDatabaseType()) {
|
|
|
+ case "mysql":
|
|
|
+ driverName = LoadDriverConstants.MYSQL;
|
|
|
+ dbURL = "jdbc:mysql://" + dataSource.getDatabaseIp() + ":" + dataSource.getPortNumber();
|
|
|
+ showDatabaseSql = "show DATABASES";
|
|
|
+ createDatabaseSql = "CREATE DATABASE IF NOT EXISTS `" + dataSource.getDatabaseName() + "` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;";
|
|
|
+ // 得到mysql的基础数据表模版
|
|
|
+ String ret = restTemplate.getForObject(dictIp + "mysql_connection_information", String.class);
|
|
|
+ // 得到基础模版库的连接信息
|
|
|
+ Map<String, List<Map<String, Object>>> retMap = (Map<String, List<Map<String, Object>>>) JSON.parse(ret);
|
|
|
+ retMap.get("data").forEach(item -> {
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ // 建立连接查询得到所有表以及所有表信息
|
|
|
+
|
|
|
+
|
|
|
+ // 封装数据,执行创建表操作
|
|
|
|
|
|
- try
|
|
|
- {
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "sqlserver":
|
|
|
+ driverName = LoadDriverConstants.SQLSERVER;
|
|
|
+ dbURL = "jdbc:sqlserver://" + dataSource.getDatabaseIp() + ":" + dataSource.getPortNumber() + ";DatabaseName=;trustServerCertificate=true;";
|
|
|
+ showDatabaseSql = "select name from sys.databases";
|
|
|
+ createDatabaseSql = "CREATE DATABASE " + dataSource.getDatabaseName();
|
|
|
+ // 得到sqlserver的基础数据表模版
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "dm":
|
|
|
+ driverName = LoadDriverConstants.DM;
|
|
|
+ dbURL = "jdbc:dm://" + dataSource.getDatabaseIp() + ":" + dataSource.getPortNumber();
|
|
|
+ showDatabaseSql = "select name from sysobjects where TYPE$='sch' and SUBTYPE$ is null";
|
|
|
+ createDatabaseSql = "CREATE SCHEMA " + dataSource.getDatabaseName();
|
|
|
+ // 得到dm的基础数据表模版
|
|
|
+
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "oracle":
|
|
|
+ driverName = LoadDriverConstants.ORACLE;
|
|
|
+ dbURL = "jdbc:oracle:thin:@" + dataSource.getDatabaseIp() + ":" + dataSource.getPortNumber();
|
|
|
+ // 得到oracle的基础数据表模版
|
|
|
+
|
|
|
+
|
|
|
+ break;
|
|
|
+ // 如果还有其他字段需要处理,可以继续添加case分支
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (true) return null;
|
|
|
+ try {
|
|
|
Class.forName(driverName);
|
|
|
- con=DriverManager.getConnection(dbURL,userName,userPwd);
|
|
|
- st=con.createStatement();
|
|
|
+ con = DriverManager.getConnection(dbURL, userName, userPwd);
|
|
|
+ st = con.createStatement();
|
|
|
+
|
|
|
|
|
|
//查询所有数据库
|
|
|
ResultSet rs = st.executeQuery(showDatabaseSql);
|
|
|
- while(rs.next()){//如果对象中有数据,就会循环打印出来
|
|
|
+ while (rs.next()) {//如果对象中有数据,就会循环打印出来
|
|
|
System.out.println(rs.getString(1));
|
|
|
- if(rs.getString(1).equals(dataSource.getDatabaseName())){
|
|
|
+ if (rs.getString(1).equals(dataSource.getDatabaseName())) {
|
|
|
return AjaxResult.warn("数据库已存在!");
|
|
|
}
|
|
|
}
|
|
|
//创建数据库
|
|
|
st.executeUpdate(createDatabaseSql);
|
|
|
-
|
|
|
- }catch(Exception e)
|
|
|
- {
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return AjaxResult.warn("初始化数据库异常,请确保连接信息无误!");
|
|
|
}
|
|
|
-
|
|
|
return AjaxResult.success();
|
|
|
}
|
|
|
|
|
@@ -683,7 +720,7 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
|
//sqlserver
|
|
|
Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=test;trustServerCertificate=true;", "sa", "root1234");
|
|
|
//达梦
|
|
|
-// Connection con = DriverManager.getConnection("jdbc:dm://192.168.110.52:5236", "sysdba", "sysdba1234");
|
|
|
+ // Connection con = DriverManager.getConnection("jdbc:dm://192.168.110.52:5236", "sysdba", "sysdba1234");
|
|
|
JdbcRowSet jrs = new JdbcRowSetImpl(con);
|
|
|
) {
|
|
|
|
|
@@ -706,20 +743,19 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
|
}
|
|
|
|
|
|
//创建数据库
|
|
|
- public void aa() throws Exception{
|
|
|
+ public void aa() throws Exception {
|
|
|
Connection con;
|
|
|
Statement st;
|
|
|
- String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
|
|
- String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=;trustServerCertificate=true;";
|
|
|
- String userName="sa";
|
|
|
- String userPwd="root1234";
|
|
|
+ String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
|
|
+ String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=;trustServerCertificate=true;";
|
|
|
+ String userName = "sa";
|
|
|
+ String userPwd = "root1234";
|
|
|
|
|
|
- try
|
|
|
- {
|
|
|
+ try {
|
|
|
Class.forName(driverName); //jdk版本6.0以上可以省略这句话
|
|
|
- con=DriverManager.getConnection(dbURL,userName,userPwd);
|
|
|
+ con = DriverManager.getConnection(dbURL, userName, userPwd);
|
|
|
|
|
|
- st=con.createStatement();
|
|
|
+ st = con.createStatement();
|
|
|
|
|
|
//查询sql
|
|
|
// String sql= "select name from sys.databases;";
|
|
@@ -732,8 +768,7 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
|
String sql = "CREATE DATABASE hans;";
|
|
|
st.executeUpdate(sql);
|
|
|
|
|
|
- }catch(Exception e)
|
|
|
- {
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|