shardingsphere-jdbc之Mybatis读写分离

本文介绍了如何使用ShardingSphere-JDBC和Spring Boot进行Mybatis的读写分离配置,强调了主从库的读写规则及事务处理,并提供了项目依赖、配置文件、测试脚本和单元测试的相关信息。

介绍

支持项

  • 提供一主多从的读写分离配置,可独立使用,也可配合数据分片使用
  • 事务中的数据读写均用主库
  • 基于 Hint 的强制主库路由

不支持项

  • 主库和从库的数据同步
  • 主库和从库的数据同步延迟导致的数据不一致
  • 主库多写
  • 主从库间的事务一致性。主从模型中,事务中的数据读写均用主库

1. maven项目依赖

<dependencies>
	<dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
            <version>5.1.0</version>
        </dependency>
	<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
</dependencies>

2.application.yml配置

spring:
  shardingsphere:
    datasource:
      names: dsm0,dss0
      dsm0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://127.0.0.1:3306/bbs_800001?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
        password: li123456
        username: root
      dss0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://127.0.0.1:3306/bbs_800002?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
        password: li123456
        username: root
    rules:
      readwrite-splitting:
        data-sources:
          readwrite_ds:
            load-balancer-name: round_robin
            props:
              read-data-source-names: dss0
              write-data-source-name: dsm0
            type: Static
        load-balancers:
          round_robin:
            type: ROUND_ROBIN

3.测试Sql脚本

CREATE TABLE `bbs_800002`.`t_tag`  (
  `id` bigint NOT NULL,
  `create_time` datetime NULL DEFAULT NULL,
  `creator` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `status` int NOT NULL,
  `update_time` datetime NULL DEFAULT NULL,
  `updater` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `name` varchar(190) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sort` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

4.单元测试Test

@Slf4j
@SpringBootTest
class TagMapperTests {
  @Autowired
  private TagMapper tagMapper;

  @Test
  void findAll() {
    List<Tag> list = tagMapper.findAll();
    log.info("===>{}", list);
  }
}

5.项目完整地址

shardingsphere-jdbc之Mybatis读写分离 Github 地址

shardingsphere-jdbc之Mybatis读写分离 Gitee 地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值