Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
工
工位预约
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
jiatao
工位预约
Commits
cb79e7eb
Commit
cb79e7eb
authored
Oct 31, 2025
by
jiatao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交初始化配置
parent
075e9646
Pipeline
#26
failed with stages
Changes
8
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
320 additions
and
291 deletions
+320
-291
README.md
README.md
+0
-95
pom.xml
pom.xml
+37
-0
application-dev.yml
ruoyi-admin/src/main/resources/application-dev.yml
+101
-0
application-prod.yml
ruoyi-admin/src/main/resources/application-prod.yml
+102
-61
application.yml
ruoyi-admin/src/main/resources/application.yml
+11
-3
pom.xml
ruoyi-common/pom.xml
+7
-0
MyBatisConfig.java
...c/main/java/com/ruoyi/framework/config/MyBatisConfig.java
+0
-132
MybatisPlusConfig.java
...in/java/com/ruoyi/framework/config/MybatisPlusConfig.java
+62
-0
No files found.
README.md
View file @
cb79e7eb
<p
align=
"center"
>
<img
alt=
"logo"
src=
"https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png"
>
</p>
<h1
align=
"center"
style=
"margin: 30px 0 30px; font-weight: bold;"
>
RuoYi v3.9.0
</h1>
<h4
align=
"center"
>
基于SpringBoot+Vue前后端分离的Java快速开发框架
</h4>
<p
align=
"center"
>
<a
href=
"https://gitee.com/y_project/RuoYi-Vue/stargazers"
><img
src=
"https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"
></a>
<a
href=
"https://gitee.com/y_project/RuoYi-Vue"
><img
src=
"https://img.shields.io/badge/RuoYi-v3.9.0-brightgreen.svg"
></a>
<a
href=
"https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"
><img
src=
"https://img.shields.io/github/license/mashape/apistatus.svg"
></a>
</p>
## 平台简介
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
*
前端采用Vue、Element UI。
*
后端采用Spring Boot、Spring Security、Redis & Jwt。
*
权限认证使用Jwt,支持多终端认证系统。
*
支持加载动态权限菜单,多方式轻松权限控制。
*
高效率开发,使用代码生成器可以一键生成前后端代码。
*
提供了技术栈(
[
Vue3
](
https://v3.cn.vuejs.org
)
[
Element Plus
]
(https://element-plus.org/zh-CN)
[
Vite
](
https://cn.vitejs.dev
)
)版本
[
RuoYi-Vue3
](
https://gitcode.com/yangzongzhuan/RuoYi-Vue3
)
,保持同步更新。
*
提供了单应用版本
[
RuoYi-Vue-fast
](
https://gitcode.com/yangzongzhuan/RuoYi-Vue-fast
)
,Oracle版本
[
RuoYi-Vue-Oracle
](
https://gitcode.com/yangzongzhuan/RuoYi-Vue-Oracle
)
,保持同步更新。
*
不分离版本,请移步
[
RuoYi
](
https://gitee.com/y_project/RuoYi
)
,微服务版本,请移步
[
RuoYi-Cloud
](
https://gitee.com/y_project/RuoYi-Cloud
)
*
阿里云折扣场:
[
点我进入
](
http://aly.ruoyi.vip
)
,腾讯云秒杀场:
[
点我进入
](
http://txy.ruoyi.vip
)
## 内置功能
1.
用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2.
部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3.
岗位管理:配置系统用户所属担任职务。
4.
菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5.
角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6.
字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7.
参数管理:对系统动态配置常用参数。
8.
通知公告:系统通知公告信息发布维护。
9.
操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10.
登录日志:系统登录日志记录查询包含登录异常。
11.
在线用户:当前系统中活跃用户状态监控。
12.
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13.
代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
14.
系统接口:根据业务代码自动生成相关的api接口文档。
15.
服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16.
缓存监控:对系统的缓存信息查询,命令统计等。
17.
在线构建器:拖动表单元素生成相应的HTML代码。
18.
连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
## 在线体验
-
admin/admin123
-
陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
演示地址:http://vue.ruoyi.vip
文档地址:http://doc.ruoyi.vip
## 演示图
<table>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-936ec82d1f4872e1bc980927654b6007307.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"
/></td>
<td><img
src=
"https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"
/></td>
</tr>
</table>
## 若依前后端分离交流群
QQ群:
[

](https://jq.qq.com/?_wv=1027&k=5bVB1og)
[

](https://jq.qq.com/?_wv=1027&k=5eiA4DH)
[

](https://jq.qq.com/?_wv=1027&k=5AxMKlC)
[

](https://jq.qq.com/?_wv=1027&k=51G72yr)
[

](https://jq.qq.com/?_wv=1027&k=VvjN2nvu)
[

](https://jq.qq.com/?_wv=1027&k=5vYAqA05)
[

](https://jq.qq.com/?_wv=1027&k=kOIINEb5)
[

](https://jq.qq.com/?_wv=1027&k=UKtX5jhs)
[

](https://jq.qq.com/?_wv=1027&k=EI9an8lJ)
[

](https://jq.qq.com/?_wv=1027&k=SWCtLnMz)
[

](https://jq.qq.com/?_wv=1027&k=96Dkdq0k)
[

](https://jq.qq.com/?_wv=1027&k=0fsNiYZt)
[

](https://jq.qq.com/?_wv=1027&k=7xw4xUG1)
[

](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ)
[

](https://jq.qq.com/?_wv=1027&k=SpyH2875)
[

](https://jq.qq.com/?_wv=1027&k=tKEt51dz)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=F58bgRa-Dp-rsQJThiJqIYv8t4-lWfXh&authKey=UmUs4CVG5OPA1whvsa4uSespOvyd8%2FAr9olEGaWAfdLmfKQk%2FVBp2YU3u2xXXt76&noverify=0&group_code=224622315)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Nxb2EQ5qozWa218Wbs7zgBnjLSNk_tVT&authKey=obBKXj6SBKgrFTJZx0AqQnIYbNOvBB2kmgwWvGhzxR67RoRr84%2Bus5OadzMcdJl5&noverify=0&group_code=287842588)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=numtK1M_I4eVd2Gvg8qtbuL8JgX42qNh&authKey=giV9XWMaFZTY%2FqPlmWbkB9g3fi0Ev5CwEtT9Tgei0oUlFFCQLDp4ozWRiVIzubIm&noverify=0&group_code=187944233)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G6r5KGCaa3pqdbUSXNIgYloyb8e0_L0D&authKey=4w8tF1eGW7%2FedWn%2FHAypQksdrML%2BDHolQSx7094Agm7Luakj9EbfPnSTxSi2T1LQ&noverify=0&group_code=228578329)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=GsOo-OLz53J8y_9TPoO6XXSGNRTgbFxA&authKey=R7Uy%2Feq%2BZsoKNqHvRKhiXpypW7DAogoWapOawUGHokJSBIBIre2%2FoiAZeZBSLuBc&noverify=0&group_code=191164766)
[

](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=PmYavuzsOthVqfdAPbo4uAeIbu7Ttjgc&authKey=p52l8%2FXa4PS1JcEmS3VccKSwOPJUZ1ZfQ69MEKzbrooNUljRtlKjvsXf04bxNp3G&noverify=0&group_code=174569686) 点击按钮入群。
\ No newline at end of file
pom.xml
View file @
cb79e7eb
...
...
@@ -231,6 +231,28 @@
</modules>
<packaging>
pom
</packaging>
<!--环境选择-->
<profiles>
<profile>
<!-- 本地环境 -->
<id>
dev
</id>
<properties>
<spring.active>
dev
</spring.active>
</properties>
<activation>
<!-- 设置默认激活这个配置 -->
<activeByDefault>
true
</activeByDefault>
</activation>
</profile>
<profile>
<!-- prod -->
<id>
prod
</id>
<properties>
<spring.active>
prod
</spring.active>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
...
...
@@ -244,6 +266,21 @@
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
</resource>
<resource>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.xml
</include>
<include>
**/*.json
</include>
<include>
**/*.ftl
</include>
</includes>
</resource>
</resources>
</build>
<repositories>
...
...
ruoyi-admin/src/main/resources/application-dev.yml
0 → 100644
View file @
cb79e7eb
# 数据源配置
ruoyi
:
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile
:
D:/code/rs-service/rs/uploadPath
spring
:
# redis 配置
redis
:
# 地址
host
:
localhost
# 端口,默认为6379
port
:
6379
# 数据库索引
database
:
0
# 密码
password
:
# 连接超时时间
timeout
:
10s
lettuce
:
pool
:
# 连接池中的最小空闲连接
min-idle
:
0
# 连接池中的最大空闲连接
max-idle
:
8
# 连接池的最大数据库连接数
max-active
:
8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait
:
-1ms
datasource
:
type
:
com.alibaba.druid.pool.DruidDataSource
driverClassName
:
com.mysql.cj.jdbc.Driver
druid
:
# 主库数据源
master
:
url
:
jdbc:mysql://192.168.1.7:3306/rs_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username
:
root
password
:
123456
# 从库数据源
slave
:
# 从数据源开关/默认关闭
url
:
jdbc:mysql://192.168.1.7:3306/lms_laboratory?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username
:
root
password
:
123456
# 初始连接数
initialSize
:
5
# 最小连接池数量
minIdle
:
10
# 最大连接池数量
maxActive
:
20
# 配置获取连接等待超时的时间
maxWait
:
60000
# 配置连接超时时间
connectTimeout
:
30000
# 配置网络超时时间
socketTimeout
:
60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis
:
60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis
:
300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis
:
900000
# 配置检测连接是否有效
validationQuery
:
SELECT 1 FROM DUAL
testWhileIdle
:
true
testOnBorrow
:
false
testOnReturn
:
false
webStatFilter
:
enabled
:
true
statViewServlet
:
enabled
:
true
# 设置白名单,不填则允许所有访问
allow
:
url-pattern
:
/druid/*
# 控制台管理用户名和密码
login-username
:
ruoyi
login-password
:
123456
filter
:
stat
:
enabled
:
true
# 慢SQL记录
log-slow-sql
:
true
slow-sql-millis
:
1000
merge-sql
:
true
wall
:
config
:
multi-statement-allow
:
true
#mybatis-plus 插件
mybatis-plus
:
#configuration:
# 打印SQL 开发测试使用 生产关闭 ***
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
# Swagger配置
swagger
:
# 是否开启swagger
enabled
:
true
# 请求前缀
pathMapping
:
/prod-api
\ No newline at end of file
ruoyi-admin/src/main/resources/application-
drui
d.yml
→
ruoyi-admin/src/main/resources/application-
pro
d.yml
View file @
cb79e7eb
# 数据源配置
ruoyi
:
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile
:
${UPLOAD_PATH}
spring
:
# redis 配置
redis
:
# 地址
host
:
${REDIS_HOST:localhost}
# 端口,默认为6379
port
:
${REDIS_PORT:6379}
# 数据库索引
database
:
0
# 密码
password
:
${REDIS_PASSWORD:}
# 连接超时时间
timeout
:
10s
lettuce
:
pool
:
# 连接池中的最小空闲连接
min-idle
:
0
# 连接池中的最大空闲连接
max-idle
:
8
# 连接池的最大数据库连接数
max-active
:
8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait
:
-1ms
datasource
:
type
:
com.alibaba.druid.pool.DruidDataSource
driverClassName
:
com.mysql.cj.jdbc.Driver
druid
:
# 主库数据源
master
:
url
:
jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username
:
root
password
:
password
url
:
${SPRING_DATASOURCE_URL}
username
:
${SPRING_DATASOURCE_USERNAME}
password
:
${SPRING_DATASOURCE_PASSWORD}
# 从库数据源
slave
:
# 从数据源开关/默认关闭
...
...
@@ -59,3 +84,19 @@ spring:
wall
:
config
:
multi-statement-allow
:
true
#mybatis-plus 插件
mybatis-plus
:
#configuration:
# 打印SQL 开发测试使用 生产关闭 ***
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# Swagger配置
swagger
:
# 是否开启swagger
enabled
:
true
# 请求前缀
pathMapping
:
/prod-api
\ No newline at end of file
ruoyi-admin/src/main/resources/application.yml
View file @
cb79e7eb
...
...
@@ -52,7 +52,7 @@ spring:
# 国际化资源文件路径
basename
:
i18n/messages
profiles
:
active
:
druid
active
:
"
@spring.active@"
# 文件上传
servlet
:
multipart
:
...
...
@@ -97,8 +97,8 @@ token:
# 令牌有效期(默认30分钟)
expireTime
:
30
# MyBatis配置
mybatis
:
# MyBatis
Plus
配置
mybatis
-plus
:
# 搜索指定包别名
typeAliasesPackage
:
com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
...
...
@@ -106,6 +106,14 @@ mybatis:
# 加载全局的配置文件
configLocation
:
classpath:mybatis/mybatis-config.xml
global-config
:
db-config
:
logic-delete-field
:
delFlag
# 全局逻辑删除字段名(deleted为实体类属性名称)
logic-delete-value
:
1
# 逻辑已删除值。可选,默认值为 1
logic-not-delete-value
:
2
# 逻辑未删除值。可选,默认值为 0
# 关闭Banner
banner
:
false
# PageHelper分页插件
pagehelper
:
helperDialect
:
mysql
...
...
ruoyi-common/pom.xml
View file @
cb79e7eb
...
...
@@ -119,6 +119,13 @@
<artifactId>
javax.servlet-api
</artifactId>
</dependency>
<!-- ruoyi-springboot2 / mybatis-plus 配置 -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
3.5.1
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
deleted
100644 → 0
View file @
075e9646
package
com
.
ruoyi
.
framework
.
config
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.List
;
import
javax.sql.DataSource
;
import
org.apache.ibatis.io.VFS
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.mybatis.spring.SqlSessionFactoryBean
;
import
org.mybatis.spring.boot.autoconfigure.SpringBootVFS
;
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.DefaultResourceLoader
;
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
;
import
com.ruoyi.common.utils.StringUtils
;
/**
* 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
);
List
<
String
>
allResult
=
new
ArrayList
<
String
>();
try
{
for
(
String
aliasesPackage
:
typeAliasesPackage
.
split
(
","
))
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
aliasesPackage
=
ResourcePatternResolver
.
CLASSPATH_ALL_URL_PREFIX
+
ClassUtils
.
convertClassNameToResourcePath
(
aliasesPackage
.
trim
())
+
"/"
+
DEFAULT_RESOURCE_PATTERN
;
Resource
[]
resources
=
resolver
.
getResources
(
aliasesPackage
);
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
>
hashResult
=
new
HashSet
<
String
>(
result
);
allResult
.
addAll
(
hashResult
);
}
}
if
(
allResult
.
size
()
>
0
)
{
typeAliasesPackage
=
String
.
join
(
","
,
(
String
[])
allResult
.
toArray
(
new
String
[
0
]));
}
else
{
throw
new
RuntimeException
(
"mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:"
+
typeAliasesPackage
+
"未找到任何包"
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
typeAliasesPackage
;
}
public
Resource
[]
resolveMapperLocations
(
String
[]
mapperLocations
)
{
ResourcePatternResolver
resourceResolver
=
new
PathMatchingResourcePatternResolver
();
List
<
Resource
>
resources
=
new
ArrayList
<
Resource
>();
if
(
mapperLocations
!=
null
)
{
for
(
String
mapperLocation
:
mapperLocations
)
{
try
{
Resource
[]
mappers
=
resourceResolver
.
getResources
(
mapperLocation
);
resources
.
addAll
(
Arrays
.
asList
(
mappers
));
}
catch
(
IOException
e
)
{
// ignore
}
}
}
return
resources
.
toArray
(
new
Resource
[
resources
.
size
()]);
}
@Bean
public
SqlSessionFactory
sqlSessionFactory
(
DataSource
dataSource
)
throws
Exception
{
String
typeAliasesPackage
=
env
.
getProperty
(
"mybatis.typeAliasesPackage"
);
String
mapperLocations
=
env
.
getProperty
(
"mybatis.mapperLocations"
);
String
configLocation
=
env
.
getProperty
(
"mybatis.configLocation"
);
typeAliasesPackage
=
setTypeAliasesPackage
(
typeAliasesPackage
);
VFS
.
addImplClass
(
SpringBootVFS
.
class
);
final
SqlSessionFactoryBean
sessionFactory
=
new
SqlSessionFactoryBean
();
sessionFactory
.
setDataSource
(
dataSource
);
sessionFactory
.
setTypeAliasesPackage
(
typeAliasesPackage
);
sessionFactory
.
setMapperLocations
(
resolveMapperLocations
(
StringUtils
.
split
(
mapperLocations
,
","
)));
sessionFactory
.
setConfigLocation
(
new
DefaultResourceLoader
().
getResource
(
configLocation
));
return
sessionFactory
.
getObject
();
}
}
\ No newline at end of file
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
0 → 100644
View file @
cb79e7eb
package
com
.
ruoyi
.
framework
.
config
;
import
com.baomidou.mybatisplus.annotation.DbType
;
import
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
/**
* Mybatis Plus 配置
*
* @author ruoyi
*/
@EnableTransactionManagement
(
proxyTargetClass
=
true
)
@Configuration
public
class
MybatisPlusConfig
{
@Bean
public
MybatisPlusInterceptor
mybatisPlusInterceptor
()
{
MybatisPlusInterceptor
interceptor
=
new
MybatisPlusInterceptor
();
// 分页插件
interceptor
.
addInnerInterceptor
(
paginationInnerInterceptor
());
// 乐观锁插件
interceptor
.
addInnerInterceptor
(
optimisticLockerInnerInterceptor
());
// 阻断插件
interceptor
.
addInnerInterceptor
(
blockAttackInnerInterceptor
());
return
interceptor
;
}
/**
* 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
*/
public
PaginationInnerInterceptor
paginationInnerInterceptor
()
{
PaginationInnerInterceptor
paginationInnerInterceptor
=
new
PaginationInnerInterceptor
();
// 设置数据库类型为mysql
paginationInnerInterceptor
.
setDbType
(
DbType
.
MYSQL
);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor
.
setMaxLimit
(-
1L
);
return
paginationInnerInterceptor
;
}
/**
* 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public
OptimisticLockerInnerInterceptor
optimisticLockerInnerInterceptor
()
{
return
new
OptimisticLockerInnerInterceptor
();
}
/**
* 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
*/
public
BlockAttackInnerInterceptor
blockAttackInnerInterceptor
()
{
return
new
BlockAttackInnerInterceptor
();
}
}
\ 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