简单快速的用SpringBoot集成多数据源(mybatis)
2018-02-25 17:13
615 查看
SpringBoot集成多数据源就是一个项目里有多个数据库:效果如图:
第一步:在application.properties中添加如下代码:
#这里写代码片#表示操作test001的数据库 spring.datasource.test001.url=jdbc:mysql://localhost:3306/test001?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 spring.datasource.test001.username=root spring.datasource.test001.password=root spring.datasource.test001.driverClassName=com.mysql.jdbc.Driver #表示操作test002的数据库 spring.datasource.test002.url=jdbc:mysql://localhost:3306/test002?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 spring.datasource.test002.username=root spring.datasource.test002.password=root spring.datasource.test002.driverClassName=com.mysql.jdbc.Driver
第二步,在创建datasource.DataSourceConfig001和datasource.DatasourcConfig002,结构如图:
datasource.DataSourceConfig001,代码如下:
package com.demo.datasource; import com.sun.tracing.ProbeName; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; import javax.xml.crypto.Data; @Configuration //将其注入到SpringBoot容器中 @ d014 MapperScan(basePackages = "com.demo.test001",sqlSessionFactoryRef = "test001SqlSessionFactory") public class DataSourceConfig001 { /** * 配置test001 数据库 */ @Bean(name = "test001DataSource") @Primary //默认执行test001数据库(必须只能添加在一个数据库连接名上,不然会报错) @ConfigurationProperties(prefix = "spring.datasource.test001") public DataSource test001DataSource() { return DataSourceBuilder.create().build(); } /** * 配置test001 sql会话工厂 */ @Bean(name = "test001SqlSessionFactory") @Primary public SqlSessionFactory test001SqlSessionFactory(@Qualifier("test001DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); //配置mapper.xml文件访问路径 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); //返回 return bean.getObject(); } /** * * 配置test001 事物管理 */ @Bean(name = "test001TransactionManager") public DataSourceTransactionManager test001TransactionManager(@Qualifier("test001DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean() public SqlSessionTemplate test001(@Qualifier("test001SqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); } }
datasource.DataSourceConfig002,代码如下:
package com.demo.datasource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration //将其注入到SpringBoot容器中 @MapperScan(basePackages = "com.demo.test002",sqlSessionFactoryRef = "test002SqlSessionFactory") public class DataSourceConfig002 { /** * 配置test002 数据库 */ @Bean(name = "test002DataSource" @ConfigurationProperties(prefix = "spring.datasource.test002") public DataSource test002DataSource() { return DataSourceBuilder.create().build(); } /** * 配置test002 sql会话工厂 */ @Bean(name = "test002SqlSessionFactory") public SqlSessionFactory test002SqlSessionFactory(@Qualifier("test002DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); //配置mapper.xml文件访问路径 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); //返回 return bean.getObject(); } /** * * 配置test002 事物管理 */ @Bean(name = "test002TransactionManager") public DataSourceTransactionManager test002TransactionManager(@Qualifier("test002DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean() public SqlSessionTemplate test002(@Qualifier("test002SqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); } }
这是最核心的部分,已经完事了;
第三步,test001.test001Dao和test002.test002Dao代码分别如下:
test001.test001Dao:
package com.demo.test001; import com.demo.entity.Student; public interface test001Dao { //测试 int insert(Student student); }
mapper.test001.xml 代码如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--这个文件路径就是你加@Mapper的类--> <mapper namespace="com.demo.test001.test001Dao"> <insert id="insert" parameterType="com.demo.entity.Student"> INSERT INTO test001.student( id, name, age )VALUES ( #{id}, #{name}, #{age} ) </insert> </mapper>
test002.test002Dao
package com.demo.test002; import com.demo.entity.Student; public interface test002Dao { //测试 int insert(Student student); }
mapper.test002.xml 代码如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--这个文件路径就是你加@Mapper的类--> <mapper namespace="com.demo.test002.test002Dao"> <insert id="insert" parameterType="com.demo.entity.Student"> INSERT INTO test002.student( id, name, age )VALUES ( #{id}, #{name}, #{age} ) </insert> </mapper>
第四步,写个controller测试一下(这里我省掉了service)
package com.demo.controller.impl; import com.demo.entity.Student; import com.demo.test001.test001Dao; import com.demo.test002.test002Dao; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController public class DemoControllerImpl { @Resource private test001Dao test001Dao; @Resource private test002Dao test002Dao; @RequestMapping("/test001") public String test001() { Student student = new Student(); student.setId(1); student.setName("zhangsan"); student.setAge(12); int row = test001Dao.insert(student); return "test001"; } @RequestMapping("/test002") public String test002() { Student student = new Student(); student.setId(1); student.setName("lisi"); student.setAge(12); int row = test002Dao.insert(student); return "test002"; } }
启动项目,运行一下我的
URL1:localhost:8080/test001,
URL2:localhost:8080/test002
效果如图:
这就完事了,应该很简单的,请路过的大神多多指导,如果此文帮到您了,请帮我点个赞,谢谢各位大神。。。。。。
相关文章推荐
- 从0开始学习SpringCould(5)--SpringBoot 集成Mybatis使用Druid数据源
- Spring boot +Mybatis 实现多数据源(一:最简单版本)
- SpringBoot 集成MyBatis ,druid 数据源
- MyBatis 在Spring boot项目中快速集成mybatis和mysql
- Spring Boot 集成Mybatis实现主从(多数据源)分离方案示例
- 简单快速的用SpringBoot集成JPA
- Spring Boot(1)集成MyBatis的简单使用
- springboot之集成mybatis之多数据源
- Spring Boot 集成Mybatis实现主从(多数据源)分离方案
- Spring Boot : 集成mybatis、pagehelper插件、开启事务、druid数据源配置、mybatis-generator(十一)
- spring boot 快速集成 mybatis
- springboot 集成mybatis
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- [SpringBoot]IDEA快速构建SpringBoot应用项目(二)整合Mybatis + Druid
- 关于Spring Boot集成MyBatis、通用Mapper、PageHelper
- SpringBoot 集成 rabbitmq 简单实现通过队列进行,订单系统与库存系统,物流系统之间的信息交互
- springboot + mybatis + 多数据源
- springboot集成多数据源代码
- springboot+mybatis多数据源最简解决方案
- 10.玩转Spring Boot 集成Mybatis