Mybatis注解实现多数据源读写分离详解

  

首先需要建立两个库进行测试,我这里使用的是master_test和slave_test两个库,两张库都有一张同样的表(偷懒,喜喜),表结构

  

表名t_user   

  

|字段名|类型|备注|
  |:- - - - - - |:- - - - - -:|:- - - - - -:|
  | | int id |主键自增id |
  | | varchar名称|名称|

     

 Mybatis注解实现多数据源读写分离详解

  

表中分别添加两条不同数据,方便测试
  

  

主数据库记录名字为xiaobin,从库为小刘
  

  

开始使用Springboot整合mybatis,首先引入pom文件

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;项目xmlns=" http://maven.apache.org/POM/4.0.0 "   xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance "   xsi: schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”比;   & lt; modelVersion> 4.0.0   & lt; parent>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-parent   & lt; version> 2.1.4.RELEASE   & lt;/parent>   & lt; groupId> com.xiaobin   & lt; artifactId> mysql_master_slave   & lt; version> 1.0 -snapshot      & lt; properties>   & lt; java.version> 1.8 & lt;/java.version>   & lt; lombok.version> 1.18.6   & lt; mybatis.version> 1.3.2   & lt; lombox.version> 1.18.6   & lt;/properties>      & lt; dependencies>   & lt; !——添加网络启动坐标——比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt;/dependency>   & lt; !——添加lombok工具坐标——比;   & lt; dependency>   & lt; groupId> org.projectlombok   & lt; artifactId> lombok   & lt; version> $ {lombok.version} & lt;/version>   & lt;/dependency>   & lt; !——添加springboot测试坐标——比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-test   & lt;/dependency>   & lt; !——添加lombox测试坐标——比;   & lt; dependency>   & lt; groupId> org.projectlombok   & lt; artifactId> lombok   & lt; version> $ {lombox.version} & lt;/version>   & lt;/dependency>   & lt; !——添加mybatis依赖坐标——比;   & lt; dependency>   & lt; groupId> org.mybatis.spring.boot   & lt; artifactId> mybatis-spring-boot-starter   & lt; version> $ {mybatis.version} & lt;/version>   & lt;/dependency>   & lt; !——添加mysql驱动器坐标——比;   & lt; dependency>   & lt; groupId> mysql   & lt; artifactId> mysql-connector-java   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-jdbc   & lt;/dependency>   & lt; !——添加德鲁伊数据源坐标——比;   & lt; dependency>   & lt; groupId> com.alibaba   & lt; artifactId> druid-spring-boot-starter   & lt; version> 1.1.10   & lt;/dependency>   & lt; !——添加AOP坐标——比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-aop   & lt;/dependency>      & lt;/dependencies>   & lt;/project>      


  

  

这里使用的数据源为德鲁伊,实现数据源之间的切换用@DataSource自定义注解,配置Aop进行切换
  

  

应用程序。yml配置文件

        春天:   数据源:   类型:com.alibaba.druid.pool.DruidDataSource   德鲁伊:   xiaobin-master: #主数据源   driverClassName: com.mysql.jdbc.Driver   用户名:根   密码:根   url: jdbc: mysql://localhost: 3306/master_test& # 63; serverTimezone=% 2 b8&格林尼治时间;useUnicode=true& characterEncoding=utf8   xiaobin-slave: #从数据源   driverClassName: com.mysql.jdbc.Driver   用户名:根   密码:根   url: jdbc: mysql://localhost: 3306/slave_test& # 63; serverTimezone=% 2 b8&格林尼治时间;useUnicode=true& characterEncoding=utf8   mybatis:   mapper-locations:类路径:mapper/* . xml

Mybatis注解实现多数据源读写分离详解