博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
崛起于Springboot2.X之mysql读写分离升级版(22)
阅读量:6965 次
发布时间:2019-06-27

本文共 3391 字,大约阅读时间需要 11 分钟。

  hot3.png

介绍:本人之前写了一篇博客关于mysql的读写分离,那个需要配置多个类,如今读写分离升级了,我们不需要配置任何java配置文件类就可以,因为有人为我们封装了,我们只管添加依赖就好了

注意:如果您看的不明白,可以去看下之前我写的读写分离,会发现简单很多,

1、添加pom依赖

com.alibaba
druid-spring-boot-starter
1.1.10
com.baomidou
dynamic-datasource-spring-boot-starter
1.4.0
com.zaxxer
HikariCP
2.7.0

添加三个依赖,dynamic-datasource-spring-boot-starter 这个是数据库读写分离的主要依赖,druid-spring-boot-starter 我们使用druid数据库连接池,从库默认HikariCP数据库连接池,Springboot默认数据库连接池就是HikariCP

2、添加配置文件

spring:  datasource:    druid:      stat-view-servlet:        loginUsername: admin        loginPassword: 123456    dynamic:      master:        username:         password:         driver-class-name: com.mysql.jdbc.Driver        url: jdbc:mysql://localhost:3306/point02?characterEncoding=utf8&useSSL=false        druid:          initial-size: 3          max-active: 8          min-idle: 2          max-wait: -1          min-evictable-idle-time-millis: 30000          max-evictable-idle-time-millis: 30000          time-between-eviction-runs-millis: 0          validation-query: select 1          validation-query-timeout: -1          test-on-borrow: false          test-on-return: false          test-while-idle: true          pool-prepared-statements: true          max-open-prepared-statements: 100          filters: stat,wall          share-prepared-statements: true      slave:        one:          username:           password:           driver-class-name: com.mysql.jdbc.Driver          url: jdbc:mysql://localhost:3306/point02?characterEncoding=utf8&useSSL=false        two:          username:           password:           driver-class-name: com.mysql.jdbc.Driver          url: jdbc:mysql://localhost:3306/point02?characterEncoding=utf8&useSSL=false          druid:            initial-size: 2            max-active: 6        three:          username:           password:           driver-class-name: com.mysql.jdbc.Driver          url: jdbc:mysql://localhost:3306/score?characterEncoding=utf8&useSSL=false          druid:            initial-size: 3            max-active: 10    initialization-mode: always

3、使用  切换数据源

 可以注解在方法上和类上,同时存在方法注解优先于类上注解,强烈建议注解在service实现或mapper接口方法上。

注解 结果
没有 主库
@DS("slave") 存在slave指定slave,不存在主库
根据DynamicDataSourceStrategy策略,选择一个从库。默认负载均衡策略。
注意

force-master 会判断当前方法和类上是否有@Transational注解,如果有会强制主

 

@DS("one") @DS("two") 表示使用的从库,one指使用从库one,two之使用从库two指的数据库
@DSpublic interface UserMapper {  @Insert("INSERT INTO t_employee (name,cert_num) values (#{name},#{age})")  boolean addUser(@Param("name") String name, @Param("age") Integer age);  @Update("UPDATE t_employee set name=#{name}, cert_num=#{age} where employee_id =#{id}")  boolean updateUser(@Param("id") Integer id, @Param("name") String name, @Param("age") Integer age);  @Delete("DELETE from t_employee where employee_id =#{id}")  boolean deleteUser(@Param("id") Integer id);  @Select("SELECT * FROM t_employee")  List
selectAll();}
@DS("three")public interface ScoreMapper {    @Select({            "select * from d_import_original_mobile"    })    List
getAll();}

在mapper分别使用不同的数据源,到最后我们都可以成功,然而,如果你使用的是xml方式的话,您可以把注解加在service层上就可以,最后写controller,就可以成功。

4、官方详解

    感谢各位大牛的努力成果,

5、总结

三个依赖+一个配置文件+一个注解(@DS)==实现mysql读写分离。

 

 

转载于:https://my.oschina.net/mdxlcj/blog/1859236

你可能感兴趣的文章
redis教程(一)之redis简介
查看>>
Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup
查看>>
《Linux系统初讲》学习总结(一)
查看>>
普通(实例)方法和实例方法的定义和调用
查看>>
博客终于又找到了
查看>>
在 Delphi 下使用 DirectSound (12): 测试失真效果器 IDirectSoundFXDistortion8
查看>>
鼠标相关操作
查看>>
BM算法研究
查看>>
疯狂ios讲义之创建cocos2d项目(3)
查看>>
数据库复习
查看>>
Java并发包中的几种ExecutorService
查看>>
通过url,获取html内容,并解析
查看>>
高项2015年下半年培训随堂作业(10月日)
查看>>
windows系统中常见的环境变量有哪些
查看>>
今天到旅行
查看>>
Spark Streaming使用Kafka保证数据零丢失
查看>>
Linux学习记录--数据流重定向
查看>>
YII 联合查询
查看>>
PHP扩展模块Memcache Redis Mssql部署
查看>>
盘点11个面向文档的开源NoSQL数据库
查看>>