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中的配置生成两个数据源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @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配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @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()); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | @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:
1 2 3 4 5 6 7 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @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 多数据源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2018-05-26 pagehelper 使用
2018-05-26 jackson json转对象 对象转json