Spring boot +Mybatis多数据源的配置与使用

导读:本篇文章讲解 Spring boot +Mybatis多数据源的配置与使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、添加依赖

首先编辑pom.xml文件,添加相关依赖


<!-- MyBatis依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

<!-- 数据库驱动依赖 -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
</dependency>

<!-- 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

二、配置数据库连接

在application.properties中添加数据库相关配置
代码如下(示例):

# datasource1
spring.datasource.d1.url=jdbc:mysql://localhost:3306/tl_nandamen?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.d1.username=root
spring.datasource.d1.password=tl_mysql
spring.datasource.d1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.d1.type=com.alibaba.druid.pool.DruidDataSource

#datasource2
spring.datasource.d2.url=jdbc:mysql://localhost:3306/tl-alipay?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.d2.username=root
spring.datasource.d2.password=tl_mysql
spring.datasource.exp.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.d2.type=com.alibaba.druid.pool.DruidDataSource

三、配置数据源

1.创建 DataSourceConfig 配置数据源,根据 application.properties 中的配置生成两个数据源:
代码如下(示例):

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.d1")
    DataSource dsDvw(){
        return DruidDataSourceBuilder.create().build();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.d2")
    DataSource dsExp(){
        return DruidDataSourceBuilder.create().build();
    }
}

代码说明:
•@ConfigurationProperties 注解表示使用不同前缀的配置文件来创建不同的 DataSource 实例。

2.配置 MyBatis,主要是提供 SqlSessionFactory 实例和 SqlSessionTemplate 实例。下面是第一个数据库的配置类:

@Configuration
@MapperScan(value = "com.demo.Mybatis.mapper.mapper2",sqlSessionFactoryRef = "sqlSessionFactoryDvw")
//在 @MapperScan 注解中指定 Mapper 接口所在的位置,同时指定 SqlSessionFactory 的实例名,则该位置下的 Mapper 将使用 SqlSessionFactory 实例
public class DvwDataSourceConfig {
    @Autowired
    @Qualifier("dsDvw")
    DataSource dsDvw;

    @Bean
    SqlSessionFactory sqlSessionFactoryDvw() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dsDvw);
        return factoryBean.getObject();
    }

    //提供一个 SqlSessionTemplate 实例。这是一个线程安全类,主要用来管理 MyBatis 中的 SqlSession 操作
    @Bean
    SqlSessionTemplate sqlSessionTemplate1() throws Exception {
        return new SqlSessionTemplate(sqlSessionFactoryDvw());
    }
}

第二个数据库的配置类

@Configuration
@MapperScan(value = "com.demo.Mybatis.mapper.mapper1", sqlSessionFactoryRef = "sqlSessionFactoryExp")
public class ExpDataSourceConfig {
    @Autowired
    @Qualifier("dsExp")
    DataSource dsExp;

    @Bean
    SqlSessionFactory sqlSessionFactoryExp() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dsExp);
        return factoryBean.getObject();
    }

    @Bean
    SqlSessionTemplate sqlSessionTemplate2() throws Exception {
        return new SqlSessionTemplate(sqlSessionFactoryExp());
    }
}

四、创建实体类

五、创建数据库访问层

在com.demo.Mybatis.mapper.mapper2包下创建DVWMapper

@Mapper
public interface DVWMapper {

    @Select("select * from ${table} where cur_time > #{start} and cur_time < #{end}")
    List<VibrationEntity> getVibrationData(String table, LocalDateTime start, LocalDateTime end);
}

在com.demo.Mybatis.mapper.mapper1包下创建EXPMapper

@Mapper
public interface EXPMapper{

    @Select("select * from ${table} where cur_time > #{start} and cur_time < #{end}")
    List<ExpLorerEntity> getExpLorerData(String table, String start, String end);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119824.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!