SpringBoot 整合MyBatis 多資料來源 SpringBoot 整合MyBatis
阿新 • • 發佈:2022-05-26
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 多資料來源