springboot集成dynamic使用@DS实现多数据源
·
首先,在pom文件导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.4</version>
</dependency>
修改配置文件
配置文件信息如下
server:
port: 8087
# 设置tomcat的post请求大小为无限制
tomcat:
max-http-form-post-size: -1
spring:
# 设置日期格式
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
# 设置请求大小为无限制
servlet:
multipart:
max-file-size: -1
max-request-size: -1
datasource:
dynamic:
primary: model
datasource:
model:
url: jdbc:kingbase8:
driver-class-name: com.kingbase8.Driver
username:
password:
plan:
url: jdbc:kingbase8:
driver-class-name: com.kingbase8.Driver
username:
password:
project:
url: jdbc:kingbase8:
driver-class-name: com.kingbase8.Driver
username:
password:
jpa:
open-in-view: false
# 是否在控制台展示sql
show-sql: true
# 如果实体类中添加新字段,或者没有表 创建新的表
hibernate:
ddl-auto: none
properties:
# hibernate方言:就是对应数据库,在根据对应的数据库进行自动实现sql
hibernate.dialect: org.hibernate.dialect.Kingbase8Dialect
mybatis:
mapper-locations: classpath*:mybatis/*Mapper.xml
##配置分页插件pagehelper
pagehelper:
#heleperDialect表示配置PageHelper的方言,一般取值为mysql、oracle
helperDialect: mysql
#reasonable表示分页合理化参数,其取值默认为false,会直接根据分页参数(PageNum、PageSize)进行查询。当该参数设置为true时,pageNum小于等于0时会查询第一页,pageNum>pages(超过总数时),会查询最后一页
reasonable: true
#supportMethodsArguments表示PageHelper是否支持根据mapper方法的入参对象(queryModel)的pageNum、pageSize 来分析是否进行自动分页,默认为false(推荐配置),为true的情况下一不留神会给自己带来坑,除非我们的入参对象(queryModel)中不含这两个字段
supportMethodsArguments: false
#为了支持PageHelper的startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
params: count=countSql
#swagger配置
springfox:
documentation:
swagger:
use-model-v3: false
其中配置了三个数据源,其中选择model
作为默认数据源(对应primary
配置);
启动类如下
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan(basePackages = "com.cnooc.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
要在@SpringBootApplication注解中把DataSourceAutoConfiguration.class排除
最后使用@DS
使用@DS在service的实现类上、方法上
使用@DS在mapper的类上、方法上进行使用
其中在类上使用代表,整个实现类的数据源指向某一个,在方法上使用时,代表这个方法的数据源指向某一个
示例:
遇到问题
配置好之后,进行项目启动时,报了如下错误
这是因为在pom文件中没有把jdbc或者mybatis的jar包注掉,注掉即可。
补充:
在使用@DS
注解时,有如下注意事项:
- 不能使用事务,否则数据源不会切换,使用的还是第一次加载的数据源;
- 第一次加载数据源之后,第二次、第三次…操作其它数据源,如果数据源不存在,使用的还是第一次加载的数据源;
- 数据源名称不要包含下划线,否则不能切换。
更多推荐
已为社区贡献1条内容
所有评论(0)