Commit d68ff874 by fengshuonan

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

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