# jpa-starter
**Repository Path**: wxjack92/jpa-starter
## Basic Information
- **Project Name**: jpa-starter
- **Description**: springboot整合spring data jpa 实现多数据源,动态数据源和自动建库建表
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2022-10-09
- **Last Updated**: 2022-10-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# springboot整合spring-boot-starter-data-jpa
> 项目使用spring-boot-starter-data-jpa和druid-spring-boot-starter实现多数据源,动态数据源和自动建库建表
## 1.新建springboot项目,pom.xml导入依赖
`
mysql
mysql-connector-java
runtime
com.oracle.database.jdbc
ojdbc8
runtime
21.5.0.0
com.alibaba
druid-spring-boot-starter
1.2.8
org.springframework.boot
spring-boot-starter-data-jpa
`
## 2.yml配置文件
`
spring:
#数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
master:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
slave1:
enable: true
driverClassName: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@127.0.0.1:1521:xe?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: boot
password: boot
slave:
driverClassName: com.mysql.cj.jdbc.Driver
enable: true
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
#初始连接数
initialSize: 5
#最小连接池数量
minIdle: 10
#最大连接池数量
maxActive: 20
#配置获取连接等待超时的时间
maxWait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
#配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
#配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
#打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,此处是filter修改的地方
filters:
commons-log.connection-logger-name: stat,wall,log4j
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#合并多个DruidDataSource的监控数据
useGlobalDataSourceStat: true
#配置 DruidStatFilter
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
stat-view-servlet:
enabled: true
url-pattern: /druid/*
#IP 白名单,没有配置或者为空,则允许所有访问
allow: 127.0.0.1
#IP 黑名单,若白名单也存在,则优先使用
deny: 192.168.31.253
#禁用 HTML 中 Reset All 按钮
reset-enable: false
#登录用户名/密码
login-username: admin
login-password: 123456
#慢SQL记录
filter:
stat:
enabled: true
#慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
jpa:
properties:
hibernate:
show_sql: true
hbm2ddl:
auto: update
`
## 3.包文件介绍
#### 数据源配置
com.example.jpa.config.DruidDataSourceConfig
#### 事务配置
com.example.jpa.config.DruidTransactionMasterConfig
com.example.jpa.config.DruidTransactionSlaveConfig
#### 注解式AOP切面,用于实现动态数据源
com.example.jpa.annotation.DataSource
com.example.jpa.aspect.DynamicDataSourceAspect
#### 常量文件
com.example.jpa.constant.DataSourcesType
#### 工具类
com.example.jpa.utils.DynamicDataSourceContextHolder
#### 实体类扫描包
自动建库建表扫描包
com.example.jpa.pojo
基本pojo类:
com.example.jpa.pojo.base.BasePojo
自定义注解生成策略:
com.example.jpa.pojo.base.HibernateUUIDKeyGenerator
自动建表字段顺序错乱解决办法
org.hibernate.cfg.PropertyContainer
#### 主数据源扫描包
com.example.jpa.master
#### 从数据源扫描包
com.example.jpa.slave