在springboot+mybatis下用sharding-jdbc做多数据源读写分离是一件特别简单的事情。
demo项目下载:https://gitee.com/zhuhongliang/sharding_jdbc_study_dem.git
在引入pom之后,只需要在application.properties中配置数据库就能自动完成。
pom添加依赖:
<!-- for spring namespace --> <dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-namespace</artifactId> <version>3.1.0</version> </dependency>
<!-- for spring boot --> <dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>3.1.0</version> </dependency>
application.properties中配置数据库:
sharding.jdbc.datasource.names=master,slave # 主数据源 sharding.jdbc.datasource.master.type=com.zaxxer.hikari.HikariDataSource sharding.jdbc.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver sharding.jdbc.datasource.master.jdbc-url=jdbc:mysql://192.168.145.132:3306/test?characterEncoding=utf-8 sharding.jdbc.datasource.master.username=root sharding.jdbc.datasource.master.password=123456 # 从数据源 sharding.jdbc.datasource.slave.type=com.zaxxer.hikari.HikariDataSource sharding.jdbc.datasource.slave.driver-class-name=com.mysql.cj.jdbc.Driver sharding.jdbc.datasource.slave.jdbc-url=jdbc:mysql://192.168.145.133:3306/test?characterEncoding=utf-8 sharding.jdbc.datasource.slave.username=root sharding.jdbc.datasource.slave.password=123456 # 读写分离配置 sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin sharding.jdbc.config.masterslave.name=dataSource sharding.jdbc.config.masterslave.master-data-source-name=master sharding.jdbc.config.masterslave.slave-data-source-names=slave
以上配置完成后,写操作会自动走主数据源,读操作会自动走从数据源。
操作相当傻瓜化,但是感觉官网文档过于简洁了一些,想要做一些更多的修改,动态修改数据源无从下手。在日志中也没用体现当前使用的哪个数据源,demo写完后我是通过分别关闭主从数据库来得知当前操作使用的哪个数据库。
demo项目下载:https://gitee.com/zhuhongliang/sharding_jdbc_study_dem.git