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
3232636f
Commit
3232636f
authored
Jun 15, 2019
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新配置方式,待测试
parent
0214554e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
100 additions
and
75 deletions
+100
-75
guns-base-db-container/src/main/java/cn/stylefeng/guns/dbcontainer/core/collector/SqlSessionFactoryCreator.java
+91
-0
guns-vip-main/src/main/java/cn/stylefeng/guns/config/datasource/SqlSessionFactoryConfig.java
+9
-75
No files found.
guns-base-db-container/src/main/java/cn/stylefeng/guns/dbcontainer/core/collector/SqlSessionFactoryCreator.java
0 → 100644
View file @
3232636f
package
cn
.
stylefeng
.
guns
.
dbcontainer
.
core
.
collector
;
import
cn.stylefeng.roses.kernel.model.exception.ServiceException
;
import
com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties
;
import
com.baomidou.mybatisplus.autoconfigure.SpringBootVFS
;
import
com.baomidou.mybatisplus.core.config.GlobalConfig
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.mapping.DatabaseIdProvider
;
import
org.apache.ibatis.plugin.Interceptor
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
javax.sql.DataSource
;
/**
* mybatis的一些配置收集
*
* @author fengshuonan
* @date 2019-06-15-18:30
*/
@Data
@Slf4j
@Configuration
public
class
SqlSessionFactoryCreator
{
private
final
MybatisPlusProperties
properties
;
private
final
Interceptor
[]
interceptors
;
private
final
DatabaseIdProvider
databaseIdProvider
;
private
final
ApplicationContext
applicationContext
;
public
SqlSessionFactoryCreator
(
MybatisPlusProperties
properties
,
ObjectProvider
<
Interceptor
[]>
interceptorsProvider
,
ObjectProvider
<
DatabaseIdProvider
>
databaseIdProvider
,
ApplicationContext
applicationContext
)
{
this
.
properties
=
properties
;
this
.
interceptors
=
interceptorsProvider
.
getIfAvailable
();
this
.
databaseIdProvider
=
databaseIdProvider
.
getIfAvailable
();
this
.
applicationContext
=
applicationContext
;
}
/**
* 创建SqlSessionFactory
*/
public
SqlSessionFactory
createSqlSessionFactory
(
DataSource
dataSource
)
{
try
{
MybatisSqlSessionFactoryBean
factory
=
new
MybatisSqlSessionFactoryBean
();
factory
.
setDataSource
(
dataSource
);
factory
.
setVfs
(
SpringBootVFS
.
class
);
if
(!
ObjectUtils
.
isEmpty
(
this
.
interceptors
))
{
factory
.
setPlugins
(
this
.
interceptors
);
}
if
(
this
.
databaseIdProvider
!=
null
)
{
factory
.
setDatabaseIdProvider
(
this
.
databaseIdProvider
);
}
if
(
StringUtils
.
hasLength
(
this
.
properties
.
getTypeAliasesPackage
()))
{
factory
.
setTypeAliasesPackage
(
this
.
properties
.
getTypeAliasesPackage
());
}
if
(!
ObjectUtils
.
isEmpty
(
this
.
properties
.
resolveMapperLocations
()))
{
factory
.
setMapperLocations
(
this
.
properties
.
resolveMapperLocations
());
}
GlobalConfig
globalConfig
=
this
.
properties
.
getGlobalConfig
();
if
(
this
.
applicationContext
.
getBeanNamesForType
(
MetaObjectHandler
.
class
,
false
,
false
).
length
>
0
)
{
MetaObjectHandler
metaObjectHandler
=
this
.
applicationContext
.
getBean
(
MetaObjectHandler
.
class
);
globalConfig
.
setMetaObjectHandler
(
metaObjectHandler
);
}
//globalConfig中有缓存sqlSessionFactory,目前还没别的办法
SqlSessionFactory
sqlSessionFactory
=
factory
.
getObject
();
globalConfig
.
signGlobalConfig
(
sqlSessionFactory
);
factory
.
setGlobalConfig
(
globalConfig
);
return
factory
.
getObject
();
}
catch
(
Exception
e
)
{
log
.
error
(
"初始化SqlSessionFactory错误!"
,
e
);
throw
new
ServiceException
(
500
,
"初始化SqlSessionFactory错误!"
);
}
}
}
guns-vip-main/src/main/java/cn/stylefeng/guns/config/datasource/SqlSessionFactoryConfig.java
View file @
3232636f
...
@@ -15,29 +15,19 @@
...
@@ -15,29 +15,19 @@
*/
*/
package
cn
.
stylefeng
.
guns
.
config
.
datasource
;
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.DataSourceContext
;
import
cn.stylefeng.guns.dbcontainer.core.context.SqlSessionFactoryContext
;
import
cn.stylefeng.guns.dbcontainer.core.context.SqlSessionFactoryContext
;
import
cn.stylefeng.guns.dbcontainer.core.exception.DataSourceInitException
;
import
cn.stylefeng.guns.dbcontainer.core.exception.DataSourceInitException
;
import
cn.stylefeng.roses.core.config.properties.DruidProperties
;
import
cn.stylefeng.roses.core.config.properties.DruidProperties
;
import
cn.stylefeng.roses.core.mutidatasource.mybatis.OptionalSqlSessionTemplate
;
import
cn.stylefeng.roses.core.mutidatasource.mybatis.OptionalSqlSessionTemplate
;
import
cn.stylefeng.roses.kernel.model.exception.ServiceException
;
import
com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties
;
import
com.baomidou.mybatisplus.autoconfigure.SpringBootVFS
;
import
com.baomidou.mybatisplus.core.config.GlobalConfig
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.mapping.DatabaseIdProvider
;
import
org.apache.ibatis.plugin.Interceptor
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
javax.sql.DataSource
;
import
javax.sql.DataSource
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -54,34 +44,17 @@ import static cn.stylefeng.guns.dbcontainer.core.context.DataSourceContext.MASTE
...
@@ -54,34 +44,17 @@ import static cn.stylefeng.guns.dbcontainer.core.context.DataSourceContext.MASTE
*/
*/
@Slf4j
@Slf4j
@Configuration
@Configuration
@Import
(
SqlSessionFactoryCreator
.
class
)
public
class
SqlSessionFactoryConfig
{
public
class
SqlSessionFactoryConfig
{
private
final
MybatisPlusProperties
properties
;
private
final
Interceptor
[]
interceptors
;
private
final
DatabaseIdProvider
databaseIdProvider
;
private
final
ApplicationContext
applicationContext
;
public
SqlSessionFactoryConfig
(
MybatisPlusProperties
properties
,
ObjectProvider
<
Interceptor
[]>
interceptorsProvider
,
ObjectProvider
<
DatabaseIdProvider
>
databaseIdProvider
,
ApplicationContext
applicationContext
)
{
this
.
properties
=
properties
;
this
.
interceptors
=
interceptorsProvider
.
getIfAvailable
();
this
.
databaseIdProvider
=
databaseIdProvider
.
getIfAvailable
();
this
.
applicationContext
=
applicationContext
;
}
/**
/**
* 主sqlSessionFactory
* 主sqlSessionFactory
*/
*/
@Primary
@Primary
@Bean
@Bean
public
SqlSessionFactory
sqlSessionFactoryPrimary
(
@Qualifier
(
"dataSourcePrimary"
)
DataSource
dataSource
)
{
public
SqlSessionFactory
sqlSessionFactoryPrimary
(
@Qualifier
(
"dataSourcePrimary"
)
DataSource
dataSource
,
return
createSqlSessionFactory
(
dataSource
);
SqlSessionFactoryCreator
sqlSessionFactoryCreator
)
{
return
sqlSessionFactoryCreator
.
createSqlSessionFactory
(
dataSource
);
}
}
/**
/**
...
@@ -89,7 +62,8 @@ public class SqlSessionFactoryConfig {
...
@@ -89,7 +62,8 @@ public class SqlSessionFactoryConfig {
*/
*/
@Bean
(
name
=
"gunsSqlSessionTemplate"
)
@Bean
(
name
=
"gunsSqlSessionTemplate"
)
public
OptionalSqlSessionTemplate
gunsSqlSessionTemplate
(
@Qualifier
(
"sqlSessionFactoryPrimary"
)
SqlSessionFactory
sqlSessionFactoryPrimary
,
public
OptionalSqlSessionTemplate
gunsSqlSessionTemplate
(
@Qualifier
(
"sqlSessionFactoryPrimary"
)
SqlSessionFactory
sqlSessionFactoryPrimary
,
@Qualifier
(
"druidProperties"
)
DruidProperties
druidProperties
)
{
@Qualifier
(
"druidProperties"
)
DruidProperties
druidProperties
,
SqlSessionFactoryCreator
sqlSessionFactoryCreator
)
{
//初始化数据源容器
//初始化数据源容器
try
{
try
{
DataSourceContext
.
initDataSource
(
druidProperties
);
DataSourceContext
.
initDataSource
(
druidProperties
);
...
@@ -112,7 +86,7 @@ public class SqlSessionFactoryConfig {
...
@@ -112,7 +86,7 @@ public class SqlSessionFactoryConfig {
if
(
MASTER_DATASOURCE_NAME
.
equals
(
dbName
))
{
if
(
MASTER_DATASOURCE_NAME
.
equals
(
dbName
))
{
continue
;
continue
;
}
else
{
}
else
{
SqlSessionFactory
sqlSessionFactory
=
createSqlSessionFactory
(
dataSource
);
SqlSessionFactory
sqlSessionFactory
=
sqlSessionFactoryCreator
.
createSqlSessionFactory
(
dataSource
);
SqlSessionFactoryContext
.
addSqlSessionFactory
(
dbName
,
sqlSessionFactory
);
SqlSessionFactoryContext
.
addSqlSessionFactory
(
dbName
,
sqlSessionFactory
);
}
}
}
}
...
@@ -120,43 +94,4 @@ public class SqlSessionFactoryConfig {
...
@@ -120,43 +94,4 @@ public class SqlSessionFactoryConfig {
return
new
OptionalSqlSessionTemplate
(
sqlSessionFactoryPrimary
,
SqlSessionFactoryContext
.
getSqlSessionFactorys
());
return
new
OptionalSqlSessionTemplate
(
sqlSessionFactoryPrimary
,
SqlSessionFactoryContext
.
getSqlSessionFactorys
());
}
}
/**
* 创建SqlSessionFactory
*/
private
SqlSessionFactory
createSqlSessionFactory
(
DataSource
dataSource
)
{
try
{
MybatisSqlSessionFactoryBean
factory
=
new
MybatisSqlSessionFactoryBean
();
factory
.
setDataSource
(
dataSource
);
factory
.
setVfs
(
SpringBootVFS
.
class
);
if
(!
ObjectUtils
.
isEmpty
(
this
.
interceptors
))
{
factory
.
setPlugins
(
this
.
interceptors
);
}
if
(
this
.
databaseIdProvider
!=
null
)
{
factory
.
setDatabaseIdProvider
(
this
.
databaseIdProvider
);
}
if
(
StringUtils
.
hasLength
(
this
.
properties
.
getTypeAliasesPackage
()))
{
factory
.
setTypeAliasesPackage
(
this
.
properties
.
getTypeAliasesPackage
());
}
if
(!
ObjectUtils
.
isEmpty
(
this
.
properties
.
resolveMapperLocations
()))
{
factory
.
setMapperLocations
(
this
.
properties
.
resolveMapperLocations
());
}
GlobalConfig
globalConfig
=
this
.
properties
.
getGlobalConfig
();
if
(
this
.
applicationContext
.
getBeanNamesForType
(
MetaObjectHandler
.
class
,
false
,
false
).
length
>
0
)
{
MetaObjectHandler
metaObjectHandler
=
this
.
applicationContext
.
getBean
(
MetaObjectHandler
.
class
);
globalConfig
.
setMetaObjectHandler
(
metaObjectHandler
);
}
//globalConfig中有缓存sqlSessionFactory,目前还没别的办法
SqlSessionFactory
sqlSessionFactory
=
factory
.
getObject
();
globalConfig
.
signGlobalConfig
(
sqlSessionFactory
);
factory
.
setGlobalConfig
(
globalConfig
);
return
factory
.
getObject
();
}
catch
(
Exception
e
)
{
log
.
error
(
"初始化SqlSessionFactory错误!"
,
e
);
throw
new
ServiceException
(
500
,
"初始化SqlSessionFactory错误!"
);
}
}
}
}
\ No newline at end of file
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