Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fgqyxxlr
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yaru
fgqyxxlr
Commits
d5d2ae1d
Commit
d5d2ae1d
authored
Sep 17, 2019
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
支持通配符扫描任意多个包(无需配置多个包路径),以及防止出现类名重复异常
parent
6dfc2a0a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
2 deletions
+98
-2
ruoyi-admin/src/main/resources/application.yml
+1
-1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
+1
-1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
+96
-0
No files found.
ruoyi-admin/src/main/resources/application.yml
View file @
d5d2ae1d
...
...
@@ -73,7 +73,7 @@ spring:
# MyBatis
mybatis
:
# 搜索指定包别名
typeAliasesPackage
:
com.ruoyi
typeAliasesPackage
:
com.ruoyi
.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations
:
classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
View file @
d5d2ae1d
...
...
@@ -13,7 +13,7 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
// 表示通过aop框架暴露该代理对象,AopContext能够访问
@EnableAspectJAutoProxy
(
exposeProxy
=
true
)
// 指定要扫描的Mapper类的包的路径
@MapperScan
(
"com.ruoyi.*.mapper"
)
@MapperScan
(
"com.ruoyi.*
*
.mapper"
)
public
class
ApplicationConfig
{
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
0 → 100644
View file @
d5d2ae1d
package
com
.
ruoyi
.
framework
.
config
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
javax.sql.DataSource
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.mybatis.spring.SqlSessionFactoryBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
org.springframework.core.io.support.ResourcePatternResolver
;
import
org.springframework.core.type.classreading.CachingMetadataReaderFactory
;
import
org.springframework.core.type.classreading.MetadataReader
;
import
org.springframework.core.type.classreading.MetadataReaderFactory
;
import
org.springframework.util.ClassUtils
;
/**
* Mybatis支持*匹配扫描包
*
* @author ruoyi
*/
@Configuration
public
class
MyBatisConfig
{
@Autowired
private
Environment
env
;
static
final
String
DEFAULT_RESOURCE_PATTERN
=
"**/*.class"
;
public
static
String
setTypeAliasesPackage
(
String
typeAliasesPackage
)
{
ResourcePatternResolver
resolver
=
(
ResourcePatternResolver
)
new
PathMatchingResourcePatternResolver
();
MetadataReaderFactory
metadataReaderFactory
=
new
CachingMetadataReaderFactory
(
resolver
);
typeAliasesPackage
=
ResourcePatternResolver
.
CLASSPATH_ALL_URL_PREFIX
+
ClassUtils
.
convertClassNameToResourcePath
(
typeAliasesPackage
)
+
"/"
+
DEFAULT_RESOURCE_PATTERN
;
try
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
Resource
[]
resources
=
resolver
.
getResources
(
typeAliasesPackage
);
if
(
resources
!=
null
&&
resources
.
length
>
0
)
{
MetadataReader
metadataReader
=
null
;
for
(
Resource
resource
:
resources
)
{
if
(
resource
.
isReadable
())
{
metadataReader
=
metadataReaderFactory
.
getMetadataReader
(
resource
);
try
{
result
.
add
(
Class
.
forName
(
metadataReader
.
getClassMetadata
().
getClassName
()).
getPackage
().
getName
());
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
}
}
}
if
(
result
.
size
()
>
0
)
{
HashSet
<
String
>
h
=
new
HashSet
<
String
>(
result
);
result
.
clear
();
result
.
addAll
(
h
);
typeAliasesPackage
=
String
.
join
(
","
,
(
String
[])
result
.
toArray
(
new
String
[
0
]));
}
else
{
throw
new
RuntimeException
(
"mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:"
+
typeAliasesPackage
+
"未找到任何包"
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
typeAliasesPackage
;
}
@Bean
public
SqlSessionFactory
sqlSessionFactory
(
DataSource
dataSource
)
throws
Exception
{
String
typeAliasesPackage
=
env
.
getProperty
(
"mybatis.typeAliasesPackage"
);
String
mapperLocations
=
env
.
getProperty
(
"mybatis.mapperLocations"
);
typeAliasesPackage
=
setTypeAliasesPackage
(
typeAliasesPackage
);
final
SqlSessionFactoryBean
sessionFactory
=
new
SqlSessionFactoryBean
();
sessionFactory
.
setDataSource
(
dataSource
);
sessionFactory
.
setTypeAliasesPackage
(
typeAliasesPackage
);
sessionFactory
.
setMapperLocations
(
new
PathMatchingResourcePatternResolver
().
getResources
(
mapperLocations
));
return
sessionFactory
.
getObject
();
}
}
\ 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