文档章节

崛起于Springboot2.X之mysql读写分离升级版(22)

木九天
 木九天
发布于 07/19 10:22
字数 772
阅读 74
收藏 4

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

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

1、添加pom依赖

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>1.1.10</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>1.4.0</version>
</dependency>
<dependency>
  <groupId>com.zaxxer</groupId>
  <artifactId>HikariCP</artifactId>
  <version>2.7.0</version>
</dependency>

添加三个依赖,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、使用 @DS 切换数据源

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

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

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

 

@DS("one") @DS("two") 表示使用的从库,one指使用从库one,two之使用从库two指的数据库
@DS
public 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<User> selectAll();

}
@DS("three")
public interface ScoreMapper {

    @Select({
            "select * from d_import_original_mobile"
    })
    List<Mobile> getAll();
}

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

4、官方详解

    感谢各位大牛的努力成果,详解请点击

5、总结

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

 

 

© 著作权归作者所有

共有 人打赏支持
木九天

木九天

粉丝 87
博文 183
码字总数 124775
作品 0
海淀
程序员
崛起于Springboot2.X之Mysql读写分离(6)

序言:这个读写分离摘自于Springboot多数据源快速启动器,读写分离的话并不是按照传统方式的springmvc看方法命名那样,而是在每个方法上加注解或者类上添加注解表明选用的数据源。支持事物!...

木九天
06/26
0
0
崛起于Springboot2.X之多节点mongodb实现区块链交易记录(36)

序言:根据前两篇崛起于Springboot2.X之区块链单节点mysql实现交易记录和崛起于Springboot2.X之Mongodb多数据源处理,进行整合,实现区块链多节点mongodb实现交易记录方案。直接上代码了,不...

木九天
08/23
0
0
maxscale配合MHA搭建读写分离的高可用架构(基于GTID replication主从架构,mysql5.6)

基于GTID的主从replication并配合MHA搭建高可用架构,请参考之前的博客:http://linzhijian.blog.51cto.com/1047212/1906434。这里只叙述如何在此基础上增加maxscale中间件,实现读写分离的功...

Jenkin_lin
2017/04/07
0
0
LAMP架构升级版--LNMMP

简介 LNMMP=Linux+Nginx+MySQL+Memcache+PHP; 利用Nginx的高性能特点做前端反向代理服务器,分发用户请求,并在能够利用缓存的地方使用Memcache缓存服务,以加速缓存效率,具体架构图如下;...

xxrenzhe11
2014/04/27
0
0
崛起于Springboot2.X之配置文件详解(10)

序言:针对公司开发配置文件的一些基础常识 1、核心配置文件 springboot框架也被我认为一个工具,它的主要核心文件为application.properties,又可以命名为application.yml亦或者application...

木九天
07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

hive分区

hive为啥分区? hive为了避免全表扫描,从而引进分区技术来将数据进行划分。减少不必要数据的扫描,从而提高效率。 hive的分区和MySQL的分区的区别? mysql分区字段用的是表内字段;而hive分...

Mr_yul
23分钟前
1
0
log4j2发送消息至Kafka

title: 自定义log4j2发送日志到Kafka tags: log4j2,kafka 为了给公司的大数据平台提供各项目组的日志,而又使各项目组在改动上无感知。做了一番调研后才发现log4j2默认有支持将日志发送到kaf...

微笑向暖wx
27分钟前
0
0
LINUX中如何查看某个端口是否被占用(转发)

LINUX中如何查看某个端口是否被占用 之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep 33...

覃大光
今天
1
0
JBolt 1.5.0新版发布,升级到支持最新版JFinal和Jetty,实现了在线更新插件功能

JBolt是一个JFinal极速开发框架 定制版IDE插件 目前仅有Eclipse插件版,Idea插件版正在开发中。 JBolt的详细使用教程请移步到这里 =====版本1.5.0 更新内容 2018年10月13日10:41:52===== 注意...

山东-小木
今天
0
0
laravel 微信支付

1.composer加载laravel微信支付第三方文件 composer require "overtrue/laravel-wechat:~4.0" composer require simplesoftwareio/simple-qrcode 1.3.* //composer生成二维码文件 2.改confi......

vio小黑
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部