Commit 98f1f55c by fengshuonan

更新oracle数据库适配

parent 01e9fff2
package cn.stylefeng.guns.base.db.dao; package cn.stylefeng.guns.base.db.dao;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.stylefeng.guns.base.db.dao.sqls.AddDatabaseInfoSql;
import cn.stylefeng.guns.base.db.dao.sqls.DatabaseListSql;
import cn.stylefeng.guns.base.db.dao.sqls.DeleteDatabaseInfoSql;
import cn.stylefeng.guns.base.db.exception.DataSourceInitException; import cn.stylefeng.guns.base.db.exception.DataSourceInitException;
import cn.stylefeng.roses.core.config.properties.DruidProperties; import cn.stylefeng.roses.core.config.properties.DruidProperties;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
...@@ -22,12 +25,6 @@ import static cn.stylefeng.guns.base.db.context.DataSourceContext.MASTER_DATASOU ...@@ -22,12 +25,6 @@ import static cn.stylefeng.guns.base.db.context.DataSourceContext.MASTER_DATASOU
@Slf4j @Slf4j
public class DataBaseInfoDao { 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; private DruidProperties druidProperties;
public DataBaseInfoDao(DruidProperties druidProperties) { public DataBaseInfoDao(DruidProperties druidProperties) {
...@@ -49,7 +46,7 @@ public class DataBaseInfoDao { ...@@ -49,7 +46,7 @@ public class DataBaseInfoDao {
Connection conn = DriverManager.getConnection( Connection conn = DriverManager.getConnection(
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword()); druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
PreparedStatement preparedStatement = conn.prepareStatement(MYSQL_SQL_LIST); PreparedStatement preparedStatement = conn.prepareStatement(new DatabaseListSql().getSql(druidProperties.getUrl()));
ResultSet resultSet = preparedStatement.executeQuery(); ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) { while (resultSet.next()) {
...@@ -77,7 +74,7 @@ public class DataBaseInfoDao { ...@@ -77,7 +74,7 @@ public class DataBaseInfoDao {
Connection conn = DriverManager.getConnection( Connection conn = DriverManager.getConnection(
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword()); druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
PreparedStatement preparedStatement = conn.prepareStatement(MYSQL_INSERT_SQL); PreparedStatement preparedStatement = conn.prepareStatement(new AddDatabaseInfoSql().getSql(druidProperties.getUrl()));
preparedStatement.setLong(1, IdWorker.getId()); preparedStatement.setLong(1, IdWorker.getId());
preparedStatement.setString(2, MASTER_DATASOURCE_NAME); preparedStatement.setString(2, MASTER_DATASOURCE_NAME);
...@@ -91,6 +88,7 @@ public class DataBaseInfoDao { ...@@ -91,6 +88,7 @@ public class DataBaseInfoDao {
int i = preparedStatement.executeUpdate(); int i = preparedStatement.executeUpdate();
log.info("初始化master的databaseInfo信息!初始化" + i + "条!"); log.info("初始化master的databaseInfo信息!初始化" + i + "条!");
} catch (Exception ex) { } catch (Exception ex) {
log.error("初始化master的databaseInfo信息错误!", ex);
throw new DataSourceInitException(DataSourceInitException.ExEnum.QUERY_DATASOURCE_INFO_ERROR); throw new DataSourceInitException(DataSourceInitException.ExEnum.QUERY_DATASOURCE_INFO_ERROR);
} }
} }
...@@ -107,7 +105,7 @@ public class DataBaseInfoDao { ...@@ -107,7 +105,7 @@ public class DataBaseInfoDao {
Connection conn = DriverManager.getConnection( Connection conn = DriverManager.getConnection(
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword()); druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
PreparedStatement preparedStatement = conn.prepareStatement(MYSQL_DELETE_SQL); PreparedStatement preparedStatement = conn.prepareStatement(new DeleteDatabaseInfoSql().getSql(druidProperties.getUrl()));
preparedStatement.setString(1, MASTER_DATASOURCE_NAME); preparedStatement.setString(1, MASTER_DATASOURCE_NAME);
int i = preparedStatement.executeUpdate(); int i = preparedStatement.executeUpdate();
log.info("删除master的databaseInfo信息!删除" + i + "条!"); log.info("删除master的databaseInfo信息!删除" + i + "条!");
......
package cn.stylefeng.guns.base.db.dao.sqls;
/**
* 异构sql获取
*
* @author fengshuonan
* @date 2019-07-16-13:13
*/
public abstract class AbstractSql {
/**
* 获取异构sql
*
* @author fengshuonan
* @Date 2019-07-16 13:14
*/
public String getSql(String jdbcUrl) {
if (jdbcUrl.contains("oracle")) {
return oracle();
} else if (jdbcUrl.contains("postgresql")) {
return pgSql();
} else if (jdbcUrl.contains("sqlserver")) {
return sqlServer();
} else {
return mysql();
}
}
protected abstract String mysql();
protected abstract String sqlServer();
protected abstract String pgSql();
protected abstract String oracle();
}
package cn.stylefeng.guns.base.db.dao.sqls;
import lombok.Getter;
/**
* 添加数据源sql
*
* @author fengshuonan
* @date 2019-07-16-13:06
*/
@Getter
public class AddDatabaseInfoSql extends AbstractSql {
@Override
protected String mysql() {
return "INSERT INTO `database_info`(`db_id`, `db_name`, `jdbc_driver`, `user_name`, `password`, `jdbc_url`, `remarks`, `create_time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
}
@Override
protected String sqlServer() {
return "INSERT INTO `database_info`(`db_id`, `db_name`, `jdbc_driver`, `user_name`, `password`, `jdbc_url`, `remarks`, `create_time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
}
@Override
protected String pgSql() {
return "INSERT INTO `database_info`(`db_id`, `db_name`, `jdbc_driver`, `user_name`, `password`, `jdbc_url`, `remarks`, `create_time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
}
@Override
protected String oracle() {
return "INSERT INTO database_info VALUES (?, ?, ?, ?, ?, ?, ?, to_date(?, 'yyyy-mm-dd hh24:mi:ss'))";
}
}
package cn.stylefeng.guns.base.db.dao.sqls;
import lombok.Getter;
/**
* 数据源列表sql
*
* @author fengshuonan
* @date 2019-07-16-13:06
*/
@Getter
public class DatabaseListSql extends AbstractSql {
@Override
protected String mysql() {
return "select db_name,jdbc_driver,jdbc_url,user_name,password from database_info";
}
@Override
protected String sqlServer() {
return "select db_name,jdbc_driver,jdbc_url,user_name,password from database_info";
}
@Override
protected String pgSql() {
return "select db_name,jdbc_driver,jdbc_url,user_name,password from database_info";
}
@Override
protected String oracle() {
return "select db_name,jdbc_driver,jdbc_url,user_name,password from database_info";
}
}
package cn.stylefeng.guns.base.db.dao.sqls;
import lombok.Getter;
/**
* 删除数据源sql
*
* @author fengshuonan
* @date 2019-07-16-13:06
*/
@Getter
public class DeleteDatabaseInfoSql extends AbstractSql {
@Override
protected String mysql() {
return "DELETE from database_info where db_name = ?";
}
@Override
protected String sqlServer() {
return "DELETE from database_info where db_name = ?";
}
@Override
protected String pgSql() {
return "DELETE from database_info where db_name = ?";
}
@Override
protected String oracle() {
return "DELETE from database_info where db_name = ?";
}
}
package cn.stylefeng.guns.sys.modular.system.service; package cn.stylefeng.guns.sys.modular.system.service;
import cn.hutool.core.bean.BeanUtil;
import cn.stylefeng.guns.base.enums.CommonStatus; import cn.stylefeng.guns.base.enums.CommonStatus;
import cn.stylefeng.guns.base.pojo.node.ZTreeNode; import cn.stylefeng.guns.base.pojo.node.ZTreeNode;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory; import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
...@@ -279,7 +280,16 @@ public class DictService extends ServiceImpl<DictMapper, Dict> { ...@@ -279,7 +280,16 @@ public class DictService extends ServiceImpl<DictMapper, Dict> {
QueryWrapper<Dict> wrapper = new QueryWrapper<>(); QueryWrapper<Dict> wrapper = new QueryWrapper<>();
wrapper.in("code", dictCodes).orderByAsc("sort"); wrapper.in("code", dictCodes).orderByAsc("sort");
return this.listMaps(wrapper); ArrayList<Map<String, Object>> results = new ArrayList<>();
//转成map
List<Dict> list = this.list(wrapper);
for (Dict dict : list) {
Map<String, Object> map = BeanUtil.beanToMap(dict);
results.add(map);
}
return results;
} }
private Serializable getKey(DictParam param) { private Serializable getKey(DictParam param) {
......
...@@ -69,6 +69,7 @@ public class SqlSessionFactoryConfig { ...@@ -69,6 +69,7 @@ public class SqlSessionFactoryConfig {
try { try {
DataSourceContext.initDataSource(druidProperties); DataSourceContext.initDataSource(druidProperties);
} catch (Exception e) { } catch (Exception e) {
log.error("初始化数据源容器错误!", e);
throw new DataSourceInitException(DataSourceInitException.ExEnum.INIT_DATA_SOURCE_ERROR); throw new DataSourceInitException(DataSourceInitException.ExEnum.INIT_DATA_SOURCE_ERROR);
} }
......
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