Commit c2fb0feb by fengshuonan

更新数据源维护

parent 37fa3a5c
......@@ -34,6 +34,12 @@ public class DataSourceContext {
*/
public static void initDataSource(DruidProperties masterDataSourceProperties) {
//清空数据库中的主数据源信息
new DataBaseInfoDao(masterDataSourceProperties).deleteMasterDatabaseInfo();
//初始化主数据源信息
new DataBaseInfoDao(masterDataSourceProperties).createMasterDatabaseInfo();
//从数据库中获取所有的数据源信息
DataBaseInfoDao dataBaseInfoDao = new DataBaseInfoDao(masterDataSourceProperties);
Map<String, DruidProperties> allDataBaseInfo = dataBaseInfoDao.getAllDataBaseInfo();
......
package cn.stylefeng.datasource.container.dao;
import cn.hutool.core.date.DateUtil;
import cn.stylefeng.datasource.container.exception.DataSourceInitException;
import cn.stylefeng.roses.core.config.properties.DruidProperties;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import static cn.stylefeng.datasource.container.context.DataSourceContext.MASTER_DATASOURCE_NAME;
/**
* 操作数据源信息的dao
*
......@@ -19,6 +24,10 @@ public class DataBaseInfoDao {
private String MYSQL_SQL_LIST = "select db_name,jdbc_driver,jdbc_url,user_name,password from database_info";
private String MYSQL_INSERT_SQL = "INSERT INTO `database_info`(`db_id`, `db_name`, `jdbc_driver`, `user_name`, `password`, `jdbc_url`, `remarks`, `create_time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
private String MYSQL_DELETE_SQL = "DELETE from database_info where db_name = ?";
private DruidProperties druidProperties;
public DataBaseInfoDao(DruidProperties druidProperties) {
......@@ -57,6 +66,57 @@ public class DataBaseInfoDao {
}
/**
* 初始化master的数据源,要和properties配置的数据源一致
*
* @author fengshuonan
* @Date 2019-06-15 10:20
*/
public void createMasterDatabaseInfo() {
try {
Class.forName(druidProperties.getDriverClassName());
Connection conn = DriverManager.getConnection(
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
PreparedStatement preparedStatement = conn.prepareStatement(MYSQL_INSERT_SQL);
preparedStatement.setLong(1, IdWorker.getId());
preparedStatement.setString(2, MASTER_DATASOURCE_NAME);
preparedStatement.setString(3, druidProperties.getDriverClassName());
preparedStatement.setString(4, druidProperties.getUsername());
preparedStatement.setString(5, druidProperties.getPassword());
preparedStatement.setString(6, druidProperties.getUrl());
preparedStatement.setString(7, "主数据源,项目启动数据源!");
preparedStatement.setString(8, DateUtil.formatDateTime(new Date()));
int i = preparedStatement.executeUpdate();
log.info("初始化master的databaseInfo信息!初始化" + i + "条!");
} catch (Exception ex) {
throw new DataSourceInitException(DataSourceInitException.ExEnum.QUERY_DATASOURCE_INFO_ERROR);
}
}
/**
* 删除master的数据源信息
*
* @author fengshuonan
* @Date 2019-06-15 10:20
*/
public void deleteMasterDatabaseInfo() {
try {
Class.forName(druidProperties.getDriverClassName());
Connection conn = DriverManager.getConnection(
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
PreparedStatement preparedStatement = conn.prepareStatement(MYSQL_DELETE_SQL);
preparedStatement.setString(1, MASTER_DATASOURCE_NAME);
int i = preparedStatement.executeUpdate();
log.info("初始化master的databaseInfo信息!初始化" + i + "条!");
} catch (Exception ex) {
throw new DataSourceInitException(DataSourceInitException.ExEnum.QUERY_DATASOURCE_INFO_ERROR);
}
}
/**
* 通过查询结果组装druidProperties
*
* @author fengshuonan
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment