Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
adb5ee01
Commit
adb5ee01
authored
Jun 15, 2019
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
重构初始化sqlSessionFactory的过程
parent
3232636f
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
28 deletions
+45
-28
guns-base-db-container/src/main/java/cn/stylefeng/guns/dbcontainer/core/context/SqlSessionFactoryContext.java
+42
-0
guns-vip-main/src/main/java/cn/stylefeng/guns/config/datasource/SqlSessionFactoryConfig.java
+3
-28
No files found.
guns-base-db-container/src/main/java/cn/stylefeng/guns/dbcontainer/core/context/SqlSessionFactoryContext.java
View file @
adb5ee01
package
cn
.
stylefeng
.
guns
.
dbcontainer
.
core
.
context
;
import
cn.stylefeng.guns.dbcontainer.core.collector.SqlSessionFactoryCreator
;
import
cn.stylefeng.guns.dbcontainer.core.exception.DataSourceInitException
;
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
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
static
cn
.
stylefeng
.
guns
.
dbcontainer
.
core
.
context
.
DataSourceContext
.
MASTER_DATASOURCE_NAME
;
/**
* mybatis的sqlSessionFactory的上下文容器(单例)
*
...
...
@@ -35,4 +42,39 @@ public class SqlSessionFactoryContext {
return
sqlSessionFactories
;
}
/**
* 初始化数据库中的数据源的SqlSessionFactory
*
* @author fengshuonan
* @Date 2019-06-15 19:51
*/
public
static
void
initBaseSqlSessionFactory
(
SqlSessionFactoryCreator
sqlSessionFactoryCreator
)
{
//初始化数据源容器
try
{
DruidProperties
druidProperties
=
SpringContextHolder
.
getBean
(
DruidProperties
.
class
);
DataSourceContext
.
initDataSource
(
druidProperties
);
}
catch
(
Exception
e
)
{
throw
new
DataSourceInitException
(
DataSourceInitException
.
ExEnum
.
INIT_DATA_SOURCE_ERROR
);
}
//获取数据库的数据源
Map
<
String
,
DataSource
>
dataSources
=
DataSourceContext
.
getDataSources
();
//创建数据库中数据源的sqlSessionFactory
for
(
Map
.
Entry
<
String
,
DataSource
>
entry
:
dataSources
.
entrySet
())
{
String
dbName
=
entry
.
getKey
();
DataSource
dataSource
=
entry
.
getValue
();
//如果是主数据源,跳过,否则会冲突
if
(
MASTER_DATASOURCE_NAME
.
equals
(
dbName
))
{
continue
;
}
else
{
SqlSessionFactory
sqlSessionFactory
=
sqlSessionFactoryCreator
.
createSqlSessionFactory
(
dataSource
);
SqlSessionFactoryContext
.
addSqlSessionFactory
(
dbName
,
sqlSessionFactory
);
}
}
}
}
guns-vip-main/src/main/java/cn/stylefeng/guns/config/datasource/SqlSessionFactoryConfig.java
View file @
adb5ee01
...
...
@@ -16,10 +16,7 @@
package
cn
.
stylefeng
.
guns
.
config
.
datasource
;
import
cn.stylefeng.guns.dbcontainer.core.collector.SqlSessionFactoryCreator
;
import
cn.stylefeng.guns.dbcontainer.core.context.DataSourceContext
;
import
cn.stylefeng.guns.dbcontainer.core.context.SqlSessionFactoryContext
;
import
cn.stylefeng.guns.dbcontainer.core.exception.DataSourceInitException
;
import
cn.stylefeng.roses.core.config.properties.DruidProperties
;
import
cn.stylefeng.roses.core.mutidatasource.mybatis.OptionalSqlSessionTemplate
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.session.SqlSessionFactory
;
...
...
@@ -30,7 +27,6 @@ import org.springframework.context.annotation.Import;
import
org.springframework.context.annotation.Primary
;
import
javax.sql.DataSource
;
import
java.util.Map
;
import
static
cn
.
stylefeng
.
guns
.
dbcontainer
.
core
.
context
.
DataSourceContext
.
MASTER_DATASOURCE_NAME
;
...
...
@@ -62,34 +58,13 @@ public class SqlSessionFactoryConfig {
*/
@Bean
(
name
=
"gunsSqlSessionTemplate"
)
public
OptionalSqlSessionTemplate
gunsSqlSessionTemplate
(
@Qualifier
(
"sqlSessionFactoryPrimary"
)
SqlSessionFactory
sqlSessionFactoryPrimary
,
@Qualifier
(
"druidProperties"
)
DruidProperties
druidProperties
,
SqlSessionFactoryCreator
sqlSessionFactoryCreator
)
{
//初始化数据源容器
try
{
DataSourceContext
.
initDataSource
(
druidProperties
);
}
catch
(
Exception
e
)
{
throw
new
DataSourceInitException
(
DataSourceInitException
.
ExEnum
.
INIT_DATA_SOURCE_ERROR
);
}
//
先添加主数据源
//
添加主数据源的SqlSessionFactory
SqlSessionFactoryContext
.
addSqlSessionFactory
(
MASTER_DATASOURCE_NAME
,
sqlSessionFactoryPrimary
);
//获取数据库的数据源
Map
<
String
,
DataSource
>
dataSources
=
DataSourceContext
.
getDataSources
();
//创建其他sqlSessionFactory
for
(
Map
.
Entry
<
String
,
DataSource
>
entry
:
dataSources
.
entrySet
())
{
String
dbName
=
entry
.
getKey
();
DataSource
dataSource
=
entry
.
getValue
();
//如果是主数据源,跳过,否则会冲突
if
(
MASTER_DATASOURCE_NAME
.
equals
(
dbName
))
{
continue
;
}
else
{
SqlSessionFactory
sqlSessionFactory
=
sqlSessionFactoryCreator
.
createSqlSessionFactory
(
dataSource
);
SqlSessionFactoryContext
.
addSqlSessionFactory
(
dbName
,
sqlSessionFactory
);
}
}
//初始化其他数据源的SqlSessionFactory的容器
SqlSessionFactoryContext
.
initBaseSqlSessionFactory
(
sqlSessionFactoryCreator
);
return
new
OptionalSqlSessionTemplate
(
sqlSessionFactoryPrimary
,
SqlSessionFactoryContext
.
getSqlSessionFactorys
());
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment