1、安装3个依赖:spring-jpa、mysql驱动(注意版本,这里使用8.0)、durid
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
2、yml配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/oa_yunxiao?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/oa_yunxiao?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
initial-size: 3
max-active: 10
min-idle: 10
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
test-while-idle: true
validationQuery: SELECT 1
test-on-borrow: false
test-on-return: false
stat-view-servlet:
enabled: false
url-pattern: /druid/*
#login-username: admin
#login-password: admin
reset-enable: true
注:很多教程都使用spring.datasource.durid.**下面的配置,我没有使用成功。默认DataSource使用的是spring.datasource.**下面的配置,所以,url、username等也复制一份到datasource下。
mysql驱动8.0后,driver-class-name:改为:com.mysql.cj.jdbc.Driver
3、不再编写DataSource的bean
4、注意事项
8.0.11驱动(应该是8版本开始),弃用了原来的方法,我们直接去看源码也能找到。
com.mysql.jdbc.Driver里面有两句话
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'
The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
意思是加载类“com.mysql.jdbc.Driver”。 这已被弃用。 新的驱动程序类是`com.mysql.cj.jdbc.Driver' 所以注意一个属性的设置“setDriverClassName” 另一个注意事项是URL的设置,有4个参数需要注意一下
- characterEncoding=utf8 (字符编码)
- useSSL=false (发现是8版本开始才需要添加,5.X印象中不需要,添加这个参数可能和MySQL的SSL连接设置有关系)
- serverTimezone=UTC (当连接数据库时候,出现Time Zone错误时添加此参数,我貌似是使用Druid连接池时才出现的这个问题)
- allowPublicKeyRetrieval=true (使用root账户登陆没问题,使用普通账户会提示Public Key Retrieval错误)