赞
踩
一个基于springboot的快速集成动态多数据源的启动器
dynamic-datasource-spring-boot-starter 是一个基于com.baomidou二次开发的springboot的快速集成多数据源的启动器。
其支持 Jdk 1.8+, SpringBoot 1.4.x 1.5.x 2.0.x。
<dependency>
<groupId>cn.humingfeng</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
spring: datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: master: url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave_1: url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave_2: url: ENC(xxxxx) # 内置加密,使用请查看详细文档 username: ENC(xxxxx) password: ENC(xxxxx) driver-class-name: com.mysql.jdbc.Driver schema: db/schema.sql # 配置则生效,自动初始化表结构 data: db/data.sql # 配置则生效,自动初始化数据 continue-on-error: true # 默认true,初始化失败是否继续 separator: ";" # sql默认分号分隔符 #......省略 #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
# 多主多从 纯粹多库(记得设置primary) 混合配置
spring: spring: spring:
datasource: datasource: datasource:
dynamic: dynamic: dynamic:
datasource: datasource: datasource:
master_1: mysql: master:
master_2: oracle: slave_1:
slave_1: sqlserver: slave_2:
slave_2: postgresql: oracle_1:
slave_3: h2: oracle_2:
@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。
强烈建议只注解在service实现上。
注解 | 结果 |
---|---|
没有@DS | 默认数据源 |
@DS(“dsName”) | dsName可以为组名也可以为具体某个库的名称 |
@Service @DS("slave") public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; public List<Map<String, Object>> selectAll() { return jdbcTemplate.queryForList("select * from user"); } @Override @DS("slave_1") public List<Map<String, Object>> selectByCondition() { return jdbcTemplate.queryForList("select * from user where age >10"); } }
PS:最新的1.2.0版本支持:
现在启动时会在从配置文件中初始化数据源后再从默认数据库表中初始化其他数据源,如果数据源表不存在会自动建表,如果存在则从配置表中读取其他数据源配置信息,并进行初始化。
*MysqlDynamicDataSourceProvider为新增类
*data_source_config 为数据源配置表,不需要手动建,表不存在会自动创建
*表中字段为
USER_NAME varchar(255) ‘用户名’,
PASSWORD varchar(255) ‘密码’,
URL varchar(255) ‘地址’,
DRIVER_CLASS_NAME ‘驱动’,
DB_NAME ‘数据源名称’,
TYPE ‘数据源类型’,
==> TYPE内容支持内容:1、com.alibaba.druid.pool.DruidDataSource
2、com.alibaba.druid.pool.DruidDataSource
3、空,则自动创建BasicDataSource
默认库如果非MySQL或者Oracle,需要改动建表语句自己打包
欢迎STAR,并关注
关注Github:1/2极客
关注博客:御前提笔小书童
关注网站:HuMingfeng
关注公众号:开发者的花花世界
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。