网页数据库系统怎么做,说说seo论坛,wordpress phpdisk,温州品牌设计公司一、 业务场景解释
由于公司业务需要开发设计一款文件读取导入工具#xff0c;导入的配置和目标数据库并不一定在同一个数据库地址#xff0c;故需要使用到自定义数据源#xff0c;并且支持数据源切换
大致场景如下#xff1a; 二、工具选择
鉴于市面上有很多工具#…一、 业务场景解释
由于公司业务需要开发设计一款文件读取导入工具导入的配置和目标数据库并不一定在同一个数据库地址故需要使用到自定义数据源并且支持数据源切换
大致场景如下 二、工具选择
鉴于市面上有很多工具具体查找资料时也看的了很多比如比较原生的druid驱动切换写法等等而公司目前架构中有一个工具引起了我的注意
苞米豆的“dynamic-datasource-spring-boot-starter”
官方文档地址https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611
多数据源切换的原理教学https://www.bilibili.com/video/BV11Z4y1f7cT/ 关于基础的dynamic-datasource-spring-boot-starter就不做介绍了官方文档讲的很清楚 三、代码实例
3.1 导入依赖
!--多数据源--
dependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion4.2.0/version
/dependency关于版本的选择
dynamic-datasourcejdkspringbootgravveldruid3.5.2jdk1.71.5.x和2.x.x和3.x.x不支持不支持1.2.17引入的socketTimeout和connectTimeout4.1.3jdk1.71.5.x和2.x.x和3.x.x不支持都支持4.2.0jdk1.81.5.x和2.x.x和3.x.x支持都支持
目前自己的项目是springboot2.5.2 jdk1.8配合4.20版本是兼容可用的
3.2 示例
package com.zhc.dynamic;import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.creator.*;
import com.baomidou.dynamic.datasource.creator.basic.BasicDataSourceCreator;
import com.baomidou.dynamic.datasource.creator.beecp.BeeCpDataSourceCreator;
import com.baomidou.dynamic.datasource.creator.dbcp.Dbcp2DataSourceCreator;
import com.baomidou.dynamic.datasource.creator.druid.DruidDataSourceCreator;
import com.baomidou.dynamic.datasource.creator.hikaricp.HikariDataSourceCreator;
import com.baomidou.dynamic.datasource.creator.jndi.JndiDataSourceCreator;
import com.zhc.domain.DataSourceDTO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import javax.sql.DataSource;
import java.util.Set;RestController
RequestMapping(/datasources)
public class DataSourceController {Autowiredprivate DataSource dataSource;// private final DataSourceCreator dataSourceCreator; //3.3.1及以下版本使用这个通用强烈推荐sb2用户至少升级到3.5.2版本Autowiredprivate DefaultDataSourceCreator dataSourceCreator;//如果是用4.x以上版本因为要和spring解绑重构了一些东西比如缺少了懒启动和启动初始化数据库。不太建议用以下独立的创建器只建议用上面的DefaultDataSourceCreatorGetMapping// (获取当前所有数据源)public SetString now() {DynamicRoutingDataSource ds (DynamicRoutingDataSource) dataSource;return ds.getDataSources().keySet();}//通用数据源会根据maven中配置的连接池根据顺序依次选择。//默认的顺序为druidhikaricpbeecpdbcpspring basicPostMapping(/add)// (通用添加数据源推荐)public SetString add(Validated RequestBody DataSourceDTO dto) {DataSourceProperty dataSourceProperty new DataSourceProperty();BeanUtils.copyProperties(dto, dataSourceProperty);DynamicRoutingDataSource ds (DynamicRoutingDataSource) dataSource;DataSource dataSource dataSourceCreator.createDataSource(dataSourceProperty);ds.addDataSource(dto.getPoolName(), dataSource);return ds.getDataSources().keySet();}DeleteMapping// (删除数据源)public String remove(String name) {DynamicRoutingDataSource ds (DynamicRoutingDataSource) dataSource;ds.removeDataSource(name);return 删除成功;}
}以上示例提供了用户通过接口对数据源进行增删查。
package com.zhc.domain;import lombok.Data;Data
public class DataSourceDTO {/*** 连接池名称*/private String poolName;/*** JDBC driver org.h2.Driver*/private String driverClassName;/*** JDBC url 地址*/private String url;/*** JDBC 用户名*/private String username;/*** JDBC 密码*/private String password;
}3.3 git地址
https://gitee.com/zhc-gitee/dynamic-datasource-springboot-demo