首先废话不说,上核心依赖
<!--Mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<!--Sql Server的依赖-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>${sqljdbc4.version}</version>
</dependency>
<!-- 动态数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic.version}</version>
</dependency>
<!--集成druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
yml配置
spring:
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
druid:
web-stat-filter:
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据
stat-view-servlet: #访问监控网页的登录用户名和密码
login-username: druid
login-password: druid
url-pattern: /druid/*
enabled: true
allow: #为空 或 默认 就是不限制ip访问
#filters: stat,wall,logback
#aop-patterns: com.rockit.epc.*.controller.*
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动,启动后在未匹配到指定数据源时,会抛出异常,不启动则使用默认数据源
druid: # 全局druid参数,单独数据源配置为空时取全局配置
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 1
min-idle: 2
maxActive: 8
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,logback
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=3000
datasource:
master: #默认数据源(mysql)
url: jdbc:mysql://127.0.0.1:3306/rdccepc?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: xxx
password: xxx
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid: #配置master 默认连接池参数
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 3
min-idle: 3
maxActive: 8
# 配置获取连接等待超时的时间
maxWait: 600000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,logback
#Spring监控
aop-patterns: com.rockit.epc.*.controller.*
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=3000
sql-server: # sqlServer 数据源
url: jdbc:sqlserver://127.0.0.1:1433;databaseName=BPMDB
username: sa
password: xxx
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
druid: # 配置multi-datasource1 数据源连接池参数
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 2
min-idle: 2
maxActive: 2
# 配置获取连接等待超时的时间
maxWait: 600000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
#Spring监控
aop-patterns: com.rockit.epc.*.controller.*
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=3000
java代码中的使用,默认使用 master 数据源,使用 @DS("sql-server") 切换到指定数据源
package com.xxx.xxx.contract.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.xxx.xxx.contract.entity.BPMInstConsign;
import com.xxx.xxx.contract.mapper.BPMInstConsignMapper;
import com.xxx.xxx.contract.service.BPMInstConsignService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.hutool.core.util.StrUtil;
import java.util.List;
/**
* 服务实现类
* @author zhoujk
* @since 2023-08-01
*/
@Service
@DS("sql-server") //指定sqlServer数据源
public class BPMInstConsignServiceImpl extends ServiceImpl<BPMInstConsignMapper, BPMInstConsign> implements BPMInstConsignService {
@Autowired
private BPMInstConsignMapper bPMInstConsignMapper;
/**
* 分页列表
* @param param 根据需要进行传值
* @return
*/
@Override
public Page<BPMInstConsign> page(Page reqPage,BPMInstConsign param) {
QueryWrapper<BPMInstConsign> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.eq(param.getConsignID() != null, BPMInstConsign::getConsignID, param.getConsignID())
.eq(param.getEnabled() != null, BPMInstConsign::getEnabled, param.getEnabled())
.eq(param.getOwnerStepID() != null, BPMInstConsign::getOwnerStepID, param.getOwnerStepID())
.eq(StrUtil.isNotBlank(param.getReturnType()), BPMInstConsign::getReturnType, param.getReturnType())
.eq(StrUtil.isNotBlank(param.getRoutingType()), BPMInstConsign::getRoutingType, param.getRoutingType());
Page<BPMInstConsign> page = page(reqPage, queryWrapper);
return page;
}
}