背景:
druid版本:1.1.10;
springboot版本:2.2.5 RELEASE
坑一:
报错: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.
2.2.x版本下的Springboot已经不支持 “com.mysql.jdbc.Driver”这个驱动了,这个驱动是对应MySql 5.5.x版本的;需要换上MySql 5.6.x版本的驱动,即:“com.mysql.cj.jdbc.Driver”,因此,我们只需要修改一下配置文件,换一个驱动,然后设置一下时区(5.6.x版本不设置时区会报错)
参考配置(yml格式):
# druid
spring:
datasource: # 数据库源配置
url: jdbc:mysql://127.0.0.1:3306/honeynet?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource # 数据库连接源类型
tomcat: # tomcat 数据库连接配置
max-active: 1000 # 数据库最大连接数
initial-size: 100 # 数据库初始连接数
max-wait: 60000 # 配置获取连接等待超时的时间
min-idle: 150 # 需要维护的最小空闲连接数目
time-between-eviction-runs-millis: 60000 # 间隔多久检测一次空闲连接数目
min-evictable-idle-time-millis: 300000 # 每条数据库连接最小生存时间
test-on-borrow: false # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个,注意: 设置为true后如果要生效,validation-query参数必须设置为非空字符串
test-while-idle: false # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.注意: 设置为true后如果要生效,validation-query参数必须设置为非空字符串
test-on-return: false # 指明是否在归还到池中前进行检验,注意: 设置为true后如果要生效, validation-query参数必须设置为非空字符串
validation-query: select 1 # SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录
num-tests-per-eviction-run: 3 # 在每次空闲连接回收器线程(如果有)运行时检查的连接数量,默认值就是3.
坑二:
使用mybatis时,给dao层接口打注解的时候@MapperScan和@Mapper一个即可,前者能同时指定多个mapper文件;
并且写SQL的时候,推荐xml文件和注解一起用,简单的SQL用注解,复杂的SQL用xml,这样可读性强。
参考配置(yml格式):
mybatis:
type-aliases-package: com.xxx.xxx
configuration:
map-underscore-to-camel-case: true
default-fetch-size: 100
default-statement-timeout: 3000
mapper-locations: classpath:/mapper/*.xml
坑三:
报错:com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set.....
解决方案:需要添加和修改某些配置项 (https://blog.csdn.net/HXNLYW/article/details/86672024)