使用MybatisPlus如何配置多个数据源

一、需求

假设我们原本只查询单个环境的mysql库数据,现在如果想进行改造该如何支持查询多个环境的mysql库的数据呢?

二、需要准备的环境

两台mysql数据库服务器:

Host1:192.168.25.134

Host2:192.168.25.166

三、配置文件修改

修改application.properties的内容,多个数据库的配置名需要保证唯一

bash 复制代码
#三套环境
spring.datasource.api3.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.api3.sql-script-encoding=utf-8
spring.datasource.api3.url=jdbc:mysql://192.168.25.134:3306/api?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.api3.username=api
spring.datasource.api3.password=apiapi
#四套环境
spring.datasource.api4.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.api4.sql-script-encoding=utf-8
spring.datasource.api4.url=jdbc:mysql://192.168.25.166:3306/api?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.api4.username=api
spring.datasource.api4.password=apiapi

四、配置代码修改

代码中配置多个数据源

java 复制代码
@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.api3")
    public DataSource dataSource2() {
        return DataSourceBuilder.create().build();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.api4")
    public DataSource dataSource3() {
        return DataSourceBuilder.create().build();
    }
}

创建多个数据源对应的bean对象

java 复制代码
@Configuration
@MapperScan(basePackages = "com.icbc.ndf.jft.manager.mapper3", sqlSessionFactoryRef = "sqlSessionFactory2")
public class MyBatisConfig2 {
    @Autowired
    @Qualifier("dataSource2")
    private DataSource dataSource2;
    @Bean
    public SqlSessionFactory sqlSessionFactory2() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource2);
        return factoryBean.getObject();
    }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate2() throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory2());
    }
}
java 复制代码
@Configuration
@MapperScan(basePackages = "com.icbc.ndf.jft.manager.mapper4", sqlSessionFactoryRef = "sqlSessionFactory3")
public class MyBatisConfig3 {
    @Autowired
    @Qualifier("dataSource3")
    private DataSource dataSource3;
    @Bean
    public SqlSessionFactory sqlSessionFactory3() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource3);
        return factoryBean.getObject();
    }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate3() throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory3());
    }
}

五、创建多个mapper目录

每个mapper目录下对应不同数据库的mapper及mapper.xml文件。这里以mapper作为示例。在mapper3和mapper4下分别创建ApiResExtendMapper3 和ApiResExtendMapper4 ,以及对应的xml文件

java 复制代码
@Mapper
public interface ApiResExtendMapper3 {



    /**
     * 通过实体作为筛选条件查询
     *
     * @param apiResExtend 实例对象
     * @return 对象列表
     */
    List<ApiResExtend> queryByUrl(ApiResExtend apiResExtend);
}
java 复制代码
@Mapper
public interface ApiResExtendMapper4 {



    /**
     * 通过实体作为筛选条件查询
     *
     * @param apiResExtend 实例对象
     * @return 对象列表
     */
    List<ApiResExtend> queryByUrl(ApiResExtend apiResExtend);

}

这样我们就完成了多数据源的配置,可以启动项目测试了~~

相关推荐
九皇叔叔9 天前
【06】SpringBoot3 MybatisPlus 修改(Mapper)
java·spring boot·mybatis·mybatisplus
九皇叔叔12 天前
【02】SpringBoot3 MybatisPlus 加入日志功能
java·mysql·mybatis·日志·mybatisplus
子非鱼92118 天前
MyBatisPlus快速上手
数据库·spring boot·mybatisplus
DCTANT24 天前
【原创】使用更优雅的方式改造MyBatisPlus逻辑删除插件
spring boot·后端·mysql·kotlin·mybatis·mybatisplus
回忆是昨天里的海1 个月前
Spring boot接入视图时的问题
mysql·mybatisplus·视图
咘噜biu2 个月前
多租户动态数据源插件dynamic-datasource简介
java·mybatisplus·动态数据源·多租户
阿拉斯攀登2 个月前
MyBatis-Plus 全面介绍 & Spring Boot 集成实战
java·spring boot·mybatisplus·mp
LSL666_2 个月前
mybatisplus入门案例
数据库·mysql·mybatisplus
fanruitian2 个月前
springboot-mybatisplus-demo
spring boot·后端·mybatis·mybatisplus
草原印象2 个月前
Spring Boot Spring MVC MyBatis MyBatis Plus框架编写项目实战案例
spring boot·spring·mybatis·springmvc·mybatisplus