SpringBoot整合多数据源实现

项目架构

1.导入相关依赖

 1 <dependency>
 2             <groupId>org.springframework.boot</groupId>
 3             <artifactId>spring-boot-starter-web</artifactId>
 4         </dependency>
 5
 6         <dependency>
 7             <groupId>org.springframework.boot</groupId>
 8             <artifactId>spring-boot-starter-test</artifactId>
 9             <scope>test</scope>
10         </dependency>
11
12         <!--freemarker支持-->
13         <dependency>
14             <groupId>org.springframework.boot</groupId>
15             <artifactId>spring-boot-starter-freemarker</artifactId>
16         </dependency>
17
18         <!-- mysql驱动 -->
19         <dependency>
20             <groupId>mysql</groupId>
21             <artifactId>mysql-connector-java</artifactId>
22         </dependency>
23
24         <!--整合mybatis-->
25         <dependency>
26             <groupId>org.mybatis.spring.boot</groupId>
27             <artifactId>mybatis-spring-boot-starter</artifactId>
28             <version>1.1.1</version>
29         </dependency>

2.application.properties

 1 ## test1 数据源配置
 2 #spring.datasource.test1.driverClassName=com.mysql.jdbc.Driver
 3 #spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf8
 4 #spring.datasource.test1.username=root
 5 #spring.datasource.test1.password=123
 6
 7
 8 ## test2 数据源配置
 9 #spring.datasource.test2.driverClassName=com.mysql.jdbc.Driver
10 #spring.datasource.test2.jdbc-url=jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8
11 #spring.datasource.test2.username=root
12 #spring.datasource.test2.password=123

3.创建datasource包  下TestMyBatisConfig1

 1 @Configuration
 2 @MapperScan(basePackages = "cn.happy.test1", sqlSessionFactoryRef =  "test1SqlSessionFactory")
 3 public class DataSource1Config {
 4         @Bean(name = "test1DataSource")
 5         @ConfigurationProperties(prefix = "spring.datasource.test1")
 6         @Primary
 7         public DataSource testDataSource() {
 8             return DataSourceBuilder.create().build();
 9         }
10
11         @Bean(name = "test1SqlSessionFactory")
12         @Primary
13         public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception {
14             SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
15             bean.setDataSource(dataSource);
16             //读取mybatis小配置文件
17            // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml"));
18             return bean.getObject();
19         }
20
21         @Bean(name = "test1TransactionManager")
22         @Primary
23         public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
24             return new DataSourceTransactionManager(dataSource);
25         }
26
27         @Bean(name = "test1SqlSessionTemplate")
28         @Primary
29         public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
30             return new SqlSessionTemplate(sqlSessionFactory);
31         }
32 }

@Primary注解标识默认使用的数据源

如果不加启动会报如下错误:意思是有两个数据源  不知需要使用哪个数据源

3.创建datasource包  下TestMyBatisConfig2

 1 @Configuration
 2 @MapperScan(basePackages = "cn.happy.test2", sqlSessionFactoryRef =  "test2SqlSessionFactory")
 3 public class DataSource2Config {
 4         @Bean(name = "test2DataSource")
 5         @ConfigurationProperties(prefix = "spring.datasource.test2")
 6         public DataSource testDataSource() {
 7             return DataSourceBuilder.create().build();
 8         }
 9
10         @Bean(name = "test2SqlSessionFactory")
11         public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception {
12             SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
13             bean.setDataSource(dataSource);
14             //读取mybatis小配置文件
15            // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test2/*.xml"));
16             return bean.getObject();
17         }
18
19         @Bean(name = "test2TransactionManager")
20         public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {
21             return new DataSourceTransactionManager(dataSource);
22         }
23
24         @Bean(name = "test2SqlSessionTemplate")
25         public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
26             return new SqlSessionTemplate(sqlSessionFactory);
27         }
28
29     }

4.entity层

 1 /**
 2  * author:  刘涛
 3  *
 4  * @create 2018-04-04 11:18
 5  */
 6 public class Book {
 7
 8     private Integer bookid;
 9
10     private String bookname;
11
12     private Integer bookprice;
13
14 get  set省略。。
15 }

5.test1下的dao中BookMapperTest1

 1 public interface BookMapperTest1 {
 2
 3     @Select("select * from book where bookname=#{bookname}")
 4     public Book findByName(@Param("bookname") String bookname);
 5
 6     @Insert("insert into book(bookname,bookprice) values (#{bookname},#{bookprice})")
 7     public int insertBook(@Param("bookname") String bookname, @Param("bookprice") Double bookprice);
 8
 9     @Select("select * from book")
10     public Book findBook(@Param("Book") Book book);
11 }

6.test2下的dao中BookMapperTest2

1 public interface BookMapperTest2 {
2
3     @Select("select * from book where bookname=#{bookname}")
4     public Book findByName(@Param("bookname") String bookname);
5
6     @Insert("insert into book(bookname,bookprice) values (#{bookname},#{bookprice})")
7     public int insertBook(@Param("bookname") String bookname, @Param("bookprice") Double bookprice);
8 }

7.controller层

@RestController
public class BookController {
    @Autowired
    private BookMapperTest1 bookMapperTest1;

    @Autowired
    private BookMapperTest2 bookMapperTest2;

    @RequestMapping("insert001")
    public String insert001(String bookname,Double bookprice){
        bookMapperTest1.insertBook(bookname,bookprice);
        return "success";
    }

    @RequestMapping("insert002")
    public String insert002(String bookname,Double bookprice){
        bookMapperTest2.insertBook(bookname,bookprice);
        return "success";
    }
}

8.启动项目

test1数据库

test2数据库

原文地址:https://www.cnblogs.com/liutao1122/p/8727292.html

时间: 2024-11-08 14:51:06

SpringBoot整合多数据源实现的相关文章

Springboot整合Druid数据源

Druid是阿里巴巴的一个开源的JDBC组件,该组件由数据库连接池.插件框架和SQL解析器组成,主要功能如下: 1.DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. 2.DruidDataSource 高效可管理的数据库连接池. 3.SQLParser解析器兼容所有的JDBC数据库,如:Mysql,Oracle.SQL Server数据库. 同时它结合了C3P0.DBCP.PROXOOL等DB池的优点,加入了日志监控,在稳定性.可扩展性和性能方便具有

springboot整合多数据源配置

简介 主要介绍两种整合方式,分别是 springboot+mybatis 使用分包方式整合,和 springboot+druid+mybatisplus 使用注解方式整合. 一.表结构 在本地新建两个数据库,名称分别为db1和db2,新建一张user表,表结构如下: SQL代码: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(25) NOT NULL COMMENT

SpringBoot整合Druid数据源详细文档

1.数据库结构 2.项目结构 3.pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupI

SpringBoot整合Mybatis【非注解版】

接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 ? 选择Spring Initializr,配置JDK版本 ? 输入项目名 ? 选择构建web项目所需的staters(启动器) ? 选择与数据库相关的组件 ? 分析:Spring Boot基本上将我们实际项目开发中所遇到的所有场景都做了封装.它将所有的功能场景都抽取出来,做成了一个个的staters(启动器),只需要在项目的pom.xml配置文件里面引入这些starter相关场景的所有依赖都会导入进来.需要什

SpringBoot整合Mybatis多数据源 (AOP+注解)

SpringBoot整合Mybatis多数据源 (AOP+注解) 1.pom.xml文件(开发用的JDK 10) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

springboot整合redis

springboot-整合redis springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置 一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库连接池和SQL查询的工作情况.使用Druid在一定程度上可以提高数据库的访问技能. 1.1 在pom.xml中添加依赖 <dependency> <groupId

springboot整合mybatis(SSM开发环境搭建)

0.项目结构: 1.application.properties中配置整合mybatis的配置文件.mybatis扫描别名的基本包与数据源 server.port=80 logging.level.org.springframework=DEBUG #springboot mybatis #jiazai mybatis peizhiwenjian mybatis.mapper-locations = classpath:mapper/*Mapper.xml mybatis.config-loca

SpringBoot系列十二:SpringBoot整合 Shiro

1.概念:SpringBoot 整合 Shiro 2.具体内容 Shiro 是现在最为流行的权限认证开发框架,与它起名的只有最初的 SpringSecurity(这个开发框架非常不好用,但是千万不要 以为 SpringSecurity 没有用处,它在 SpringCloud 阶段将发挥重大的作用).但是现在如果要想整合 Shiro 开发框架有一点很遗憾, SpringBoot 没有直接的配置支持,它不像整合所谓的 Kafka.Redis.DataSource,也就是说如果要想整合 Shiro 开

SpringBoot整合Kafka和Storm

前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接跳过!如果不熟,也可以看看我之前写的博客.一些相关博客如下. kafka 和 storm的环境安装 地址:http://www.panchengming.com/2018/01/26/pancm70/ kafka的相关使用 地址:http://www.panchengming.com/2018/01