開發與維運

springboot mybatis-plus動態添加數據源

dynamic-datasource-spring-boot-starter簡介

dynamic-datasource-spring-boot-starter 是一個基於springboot的快速集成多數據源的啟動器,支持通過註解切換數據源,和mybatis-plus集成等,可查看代碼中samples這個子項目。

配置

pom中增加依賴

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>

application配置文件中配置主庫

spring.datasource.dynamic.datasource.master.url=jdbc:mysql://xx.xx.xx.xx:3307/dynamic
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=root
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.jdbc.Driver

添加數據源

//動態數據源
    @Autowired
    protected DataSource dataSource;
    //數據源創建器
    @Autowired
    protected DataSourceCreator dataSourceCreator;
    //創建數據源
    public void createNewDataSource(){
        DynamicRoutingDataSource drds = (DynamicRoutingDataSource) dataSource;
        DataSourceProperty dsp = new DataSourceProperty();
        dsp.setPoolName(dbname);//鏈接池名稱
        dsp.setUrl(dburl);//數據庫連接
        dsp.setUsername(username);//用戶名
        dsp.setPassword(password);//密碼
        dsp.setDriverClassName(driverClassName);//驅動
        //創建數據源並添加到系統中管理
        DataSource dataSource = dataSourceCreator.createDataSource(dsp);
        drds.addDataSource(dbname, dataSource);
    }
    //手動切換數據源
    public void demo(){
    DynamicDataSourceContextHolder.push(dbname);//數據源名稱
    try{
        // your code 需注意使用後一定要使用poll清空數據源,
    }catch(Exception e){
    }finnally{
        DynamicDataSourceContextHolder.poll();
    }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *