开发环境springboot 2.3.0, mybatis-plus 3.2.0

1、默认连接池hikari的配置方式

(1)pom依赖

由于hikari是springboot默认的连接池管理组件,mybatis-plus中默认集成了druid和hikari两种连接池的配置,所以不用做特别的引入,只需引入mybatis-plus和多源管理模块即可。

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic-ds.version}</version>
</dependency>

(2)ds配置

spring:
datasource:
dynamic:
hikari:
min-idle: 10
max-pool-size: 10
connection-timeout: 30000
# connection-test-query: 'select 1'
primary: dw-ro
p6spy: true
datasource:
dw-rw:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://************************
username: ********
password: ********
hikari:
max-pool-size: 30

dw-ro:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://************************
username: ********
password: ********

参照mybatis-plus的多数据源配置参数源码可知,mybatis-plus支持针对单个数据源配置连接池的大小、超时等参数。

需要注意的是,DruidConfig和HikariCpConfig的key和spring datasource的默认参数并不万完全相同,使用mybatis-plus的动态数据源时,需要以mybatis-plus的为准。

基于mybatis-plus的多数据源连接池管理_多数据源

基于mybatis-plus的多数据源连接池管理_druid_02

(3)数据源切换

直接通过mybatis-plus的DS切换即可,可至于service、mapper类上,也可定义在方法上,如下:

@Mapper
@DS("dw-ro")
public interface FmWeatherIconMapper extends BaseMapper<FmWeatherIcon> {}

@Service
@DS("dw-rw")
public class DtCommonIndexDetailService extends ServiceImpl<DtCommonIndexDetailMapper, DtCommonIndexDetail> {}

@DS("dw-ro")
public VesselLocationDTO locateVessel(Integer mmsi) {}

2、druid连接池配置

(1)pom依赖

由于mybatis-plus中默认集成了druid和hikari两种连接池的配置,所以引入druid时,不需要引入druid-start,直接引入druid核心包即可。

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${durid.version}</version>
</dependency>

(2)ds配置

spring:
datasource:
dynamic:
druid:
min-idle: 10
max-active: 10
query-timeout: 30000
filters: stat
primary: dw-ro
p6spy: true
datasource:
dw-rw:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://xxxxxxxxxxxxxxxxxxx
username: *************
password: *************
druid:
min-idle: 10
max-active: 10
query-timeout: 30000
dw-ro:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://xxxxxxxxxxxxxxxxxxx
username: *************
password: *************
druid:
min-idle: 10
max-active: 10
query-timeout: 30000

同hikari一样,每个源都可以配置自己的druid参数,也可以共享外面的配置。

 

(3)数据源切换

和上述切换一致,属于mybatis-plus的功能,和连接池并无具体关联。

(4)druid监控

参照官网介绍,可配置内置监控模块,在WebMvcConfigurer中定义bean即可。

@Bean
public ServletRegistrationBean DruidStatViewServle2() {
//org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}

@Bean
public FilterRegistrationBean druidStatFilter2() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}

访问地址:http://localhost:8080/druid/index.html

基于mybatis-plus的多数据源连接池管理_多数据源_03