springboot mybatis-plus动态添加数据源

雨燕双飞 提交于 2020-08-09 18:54:00

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();
	}
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!