Commit d68ff874 by fengshuonan

添加动态增加数据源的功能,删除编辑数据源的功能

parent d09cc347
......@@ -52,7 +52,7 @@ public class SqlSessionFactoryCreator {
/**
* 创建SqlSessionFactory
*/
public SqlSessionFactory createSqlSessionFactory(DataSource dataSource) {
public synchronized SqlSessionFactory createSqlSessionFactory(DataSource dataSource) {
try {
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
factory.setDataSource(dataSource);
......
......@@ -62,7 +62,7 @@ public class DataSourceContext {
* @author fengshuonan
* @Date 2019-06-12 14:51
*/
public void addDataSource(String dbName, DataSource dataSource) {
public static void addDataSource(String dbName, DataSource dataSource) {
DATA_SOURCES.put(dbName, dataSource);
}
......@@ -79,7 +79,7 @@ public class DataSourceContext {
/**
* 数据源创建模板
*/
private static DataSource createDataSource(String dataSourceName, DruidProperties druidProperties) {
public static DataSource createDataSource(String dataSourceName, DruidProperties druidProperties) {
AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean();
atomikosDataSourceBean.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource");
atomikosDataSourceBean.setUniqueResourceName(dataSourceName);
......
package cn.stylefeng.guns.dbcontainer.core.context;
import cn.stylefeng.guns.dbcontainer.core.collector.SqlSessionFactoryCreator;
import cn.stylefeng.guns.dbcontainer.modular.entity.DatabaseInfo;
import cn.stylefeng.guns.dbcontainer.modular.factory.DruidFactory;
import cn.stylefeng.roses.core.config.properties.DruidProperties;
import cn.stylefeng.roses.core.util.SpringContextHolder;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.sql.DataSource;
......@@ -30,6 +34,29 @@ public class SqlSessionFactoryContext {
}
/**
* 添加sqlSessionFactory
*
* @author fengshuonan
* @Date 2019-06-12 15:28
*/
public static void addSqlSessionFactory(String name, DatabaseInfo databaseInfo) {
//创建properties
DruidProperties druidProperties = DruidFactory.createDruidProperties(databaseInfo);
//创建dataSource
DataSource dataSource = DataSourceContext.createDataSource(name, druidProperties);
DataSourceContext.addDataSource(name, dataSource);
//创建sqlSessionFactory
SqlSessionFactoryCreator sqlSessionFactoryCreator = SpringContextHolder.getBean(SqlSessionFactoryCreator.class);
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryCreator.createSqlSessionFactory(dataSource);
SqlSessionFactoryContext.addSqlSessionFactory(name, sqlSessionFactory);
sqlSessionFactories.put(name, sqlSessionFactory);
}
/**
* 获取所有的sqlSessionFactory
*
* @author fengshuonan
......
......@@ -96,7 +96,7 @@ public class DatabaseInfoController extends BaseController {
@RequestMapping("/editItem")
@ResponseBody
public ResponseData editItem(DatabaseInfoParam databaseInfoParam) {
this.databaseInfoService.update(databaseInfoParam);
//this.databaseInfoService.update(databaseInfoParam);
return ResponseData.success();
}
......
package cn.stylefeng.guns.dbcontainer.modular.factory;
import cn.stylefeng.guns.dbcontainer.modular.entity.DatabaseInfo;
import cn.stylefeng.roses.core.config.properties.DruidProperties;
/**
* 配置文件的创建
*
* @author fengshuonan
* @date 2019-06-15-20:05
*/
public class DruidFactory {
/**
* 创建druid配置
*
* @author fengshuonan
* @Date 2019-06-15 20:05
*/
public static DruidProperties createDruidProperties(DatabaseInfo databaseInfo) {
DruidProperties druidProperties = new DruidProperties();
druidProperties.setDriverClassName(databaseInfo.getJdbcDriver());
druidProperties.setUsername(databaseInfo.getUserName());
druidProperties.setPassword(databaseInfo.getPassword());
druidProperties.setUrl(databaseInfo.getJdbcUrl());
return druidProperties;
}
}
......@@ -2,6 +2,7 @@ package cn.stylefeng.guns.dbcontainer.modular.service.impl;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.dbcontainer.core.context.SqlSessionFactoryContext;
import cn.stylefeng.guns.dbcontainer.modular.entity.DatabaseInfo;
import cn.stylefeng.guns.dbcontainer.modular.mapper.DatabaseInfoMapper;
import cn.stylefeng.guns.dbcontainer.modular.model.params.DatabaseInfoParam;
......@@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
......@@ -28,18 +30,24 @@ import java.util.List;
public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, DatabaseInfo> implements DatabaseInfoService {
@Override
public void add(DatabaseInfoParam param){
@Transactional(rollbackFor = Exception.class)
public void add(DatabaseInfoParam param) {
//数据库中插入记录
DatabaseInfo entity = getEntity(param);
this.save(entity);
//往上下文中添加数据源
SqlSessionFactoryContext.addSqlSessionFactory(param.getDbName(), entity);
}
@Override
public void delete(DatabaseInfoParam param){
public void delete(DatabaseInfoParam param) {
this.removeById(getKey(param));
}
@Override
public void update(DatabaseInfoParam param){
public void update(DatabaseInfoParam param) {
DatabaseInfo oldEntity = getOldEntity(param);
DatabaseInfo newEntity = getEntity(param);
ToolUtil.copyProperties(newEntity, oldEntity);
......@@ -47,23 +55,23 @@ public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, Dat
}
@Override
public DatabaseInfoResult findBySpec(DatabaseInfoParam param){
public DatabaseInfoResult findBySpec(DatabaseInfoParam param) {
return null;
}
@Override
public List<DatabaseInfoResult> findListBySpec(DatabaseInfoParam param){
public List<DatabaseInfoResult> findListBySpec(DatabaseInfoParam param) {
return null;
}
@Override
public LayuiPageInfo findPageBySpec(DatabaseInfoParam param){
public LayuiPageInfo findPageBySpec(DatabaseInfoParam param) {
Page pageContext = getPageContext();
IPage page = this.baseMapper.customPageList(pageContext, param);
return LayuiPageFactory.createPageInfo(page);
}
private Serializable getKey(DatabaseInfoParam param){
private Serializable getKey(DatabaseInfoParam param) {
return param.getDbId();
}
......
......@@ -29,7 +29,6 @@
</div>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
@}
\ No newline at end of file
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