欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > springboot集成shardingsphere-分库分表

springboot集成shardingsphere-分库分表

2025/5/14 13:46:45 来源:https://blog.csdn.net/qq_44612121/article/details/139716417  浏览:    关键词:springboot集成shardingsphere-分库分表
  1. 导入maven依赖,如下
        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-jdbc-core-spring-boot-starter --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency>
  1. 新建实体表
    在这里插入图片描述
    这个表只有两个字段,其中id不要弄成自增长的。
    总共有四张表,存于两个数据库中,如下展示:
    在这里插入图片描述
    在这里插入图片描述
    这样子就形成了对course进行分库分表了,两个数据库源,每个数据库源有两张表。

  2. 配置yml文件

spring:application:name: shardingdemoshardingsphere:datasource:names: master1, master2master1:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://xxxxxx:3306/mybatis?useUnicode=true&characterEncoding=utf8&verifyServerCertificate=false&useSSL=trueusername: xxxxpassword: xxxxmaster2:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://xxxx:3306/db2019?useUnicode=true&characterEncoding=utf8&verifyServerCertificate=false&useSSL=trueusername: xxxxpassword: xxxxx
# 配置虚拟表映射sharding:tables:course:actualDataNodes: master$->{1..2}.course_$->{1..2}databaseStrategy:inline:shardingColumn: idalgorithmExpression: master$->{id%2+1}tableStrategy:inline:shardingColumn: idalgorithmExpression: course_$->{id%2+1}keyGenerator:column: idtype: SNOWFLAKEprops:worker:id: 1props:sql.show: true

其中新建了两个数据源,master1映射mybatis这个数据库,而master2映射db2019这个数据库。最后根据id的取模运算,得出,插入的新数据往哪个数据库的哪个表插入。

  1. 进行数据库操作
    @Autowiredprivate CourseMapper courseMapper;@Testpublic void insertDatabaseAndTableShardingTest() {for (int i = 0; i < 20; i++) {Course course = new Course();course.setName("分库分表插入" + i);courseMapper.insert(course);}}

此时去到数据库中就可以看见插入的数据库了,虽然有些表没有数据,只是在测试的时候,插入的数据量不够引起的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词