• SpringBoot 整合MyBatis 多数据源


    SpringBoot 整合MyBatis

    依赖:

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>

    配置数据库:

    spring:
      datasource:
        boot:
          type: com.alibaba.druid.pool.DruidDataSource
          url: jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
          username: root
          password: 123456
        boot2:
          type: com.alibaba.druid.pool.DruidDataSource
          url: jdbc:mysql://localhost:3306/boot2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
          username: root
          password: 123456

    配置数据源:

    创建DataSourceConfig配置数据源,根据application.yml中的配置生成两个数据源

    @Configuration
    public class DataSourceConfig {
     
        @Primary
        @Bean
        @ConfigurationProperties("spring.datasource.boot")
        DataSource dsOne() {
            return DruidDataSourceBuilder.create().build();
        }
     
        @Bean
        @ConfigurationProperties("spring.datasource.boot2")
        DataSource dsTwo() {
            return DruidDataSourceBuilder.create().build();
        }
     
    }
    

      

    创建MyBatis配置:

    @Configuration
    @MapperScan(value = "com.xc.xcspringboot.mapper", sqlSessionFactoryRef = "sqlSessionFactoryBean1")
    public class MyBatisConfigOne {
    
        @Autowired
        @Qualifier("dsOne")
        DataSource dsOne;
    
        @Bean
        SqlSessionFactory sqlSessionFactoryBean1() throws Exception {
            SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
            factoryBean.setDataSource(dsOne);
            factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*.xml"));
            return factoryBean.getObject();
        }
    
        @Bean
        SqlSessionTemplate sqlSessionTemplate1() throws Exception {
            return new SqlSessionTemplate(sqlSessionFactoryBean1());
        }
    
    }
    

      

    @Configuration
    @MapperScan(value = "com.xc.xcspringboot.mapper2", sqlSessionFactoryRef = "sqlSessionFactoryBean2")
    public class MyBatisConfigTwo {
    
        @Autowired
        @Qualifier("dsTwo")
        DataSource dsTwo;
    
        @Bean
        SqlSessionFactory sqlSessionFactoryBean2() throws Exception {
            SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
            factoryBean.setDataSource(dsTwo);
            factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper2/**/*.xml"));
            return factoryBean.getObject();
        }
    
        @Bean
        SqlSessionTemplate sqlSessionTemplate2() throws Exception {
            return new SqlSessionTemplate(sqlSessionFactoryBean2());
        }
    }
    

      

    创建Mapper:

    public interface BookMapper {
        List<Book> getAllBooks();
    }
    
    public interface BookMapper2 {
        List<Book> getAllBooks();
    }
    

      

    <mapper namespace="com.xc.xcspringboot.mapper.BookMapper">
        <select id="getAllBooks" resultType="com.xc.xcspringboot.model.Book">
            select *
            from book;
        </select>
    </mapper>
    
    <mapper namespace="com.xc.xcspringboot.mapper2.BookMapper2">
        <select id="getAllBooks" resultType="com.xc.xcspringboot.model.Book">
            select *
            from book;
        </select>
    </mapper>

    创建Controller:

    @RestController
    public class BookController {
        @Autowired
        BookMapper bookMapper;
        @Autowired
        BookMapper2 bookMapper2;
        @GetMapping("/test1")
        public void test1() {
            List<Book> books1 = bookMapper.getAllBooks();
            List<Book> books2 = bookMapper2.getAllBooks();
            System.out.println("books1:"+books1);
            System.out.println("books2:"+books2);
        }
    }
    

      

    文章来源: Spring Boot+Vue全栈开发实战 5.4 多数据源

  • 相关阅读:
    Servlet编程实例1
    Servlet
    JDBC之代码优化
    JDBC数据库编程
    数据库常识
    数据库基本操作
    STM32CUBEMX入门学习笔记3:HAL库以及STM32CUBE相关资料
    QT入门学习笔记2:QT例程
    爬虫制作入门学习笔记2:[转]python爬虫实例项目大全
    中移物联网onenet入门学习笔记2:中移物联的通信格式
  • 原文地址:https://www.cnblogs.com/ooo0/p/16314007.html
Copyright © 2020-2023  润新知