SpringBoot+MybatisPlus实现sharding-jdbc分库分表的示例代码

 更新时间:2024年03月25日 16:49:05   作者:黑辰King  
本文主要介绍了SpringBoot+MybatisPlus实现sharding-jdbc分库分表的示例代码,以分库,分表,分库分表三种方式来实现,具有一定的参考价值,感兴趣的可以了解一下

介绍

学习sharding-jdbc的分库分表功能,以分库,分表,分库分表三种方式来实现,此文章只展示分库分表,为简洁其余两种分篇写

1.环境搭建

代码结构

在这里插入图片描述

数据库搭建(2个mysql数据库),并在2个库下都添加多个相同结构的表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pom.xml依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.20</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
    </dependencies>

application.yml (配置文件分离,结构更清晰)

spring:
  main:
    allow-bean-definition-overriding: true # 需要配置否则加载数据源报错 是否允许定义重名的bean对象覆盖原有的bean
  profiles:
    active: databasetable

mybatis-plus:
  mapperLocations: classpath*:mapper/*Mapper.xml

application-databasetable.yml

# 数据源命名
spring.shardingsphere.datasource.names=book2021,book2022

# datasource1
spring.shardingsphere.datasource.book2021.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.book2021.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.book2021.url=jdbc:mysql://192.168.31.212:3306/book2021?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
spring.shardingsphere.datasource.book2021.username=root
spring.shardingsphere.datasource.book2021.password=123

# datasource2
spring.shardingsphere.datasource.book2022.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.book2022.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.book2022.url=jdbc:mysql://192.168.31.212:3307/book2022?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
spring.shardingsphere.datasource.book2022.username=root
spring.shardingsphere.datasource.book2022.password=123



#库名.表名
spring.shardingsphere.sharding.tables.book.actual-data-nodes=book202${1..2}.book_info_202${1..2}0${1..9},book202${1..2}.book_info_202${1..2}1${0..2}

# 数据库分片字段
spring.shardingsphere.sharding.tables.book.database-strategy.standard.sharding-column=create_time
# 数据库分片策略
spring.shardingsphere.sharding.tables.book.database-strategy.standard.preciseAlgorithmClassName=cn.xwl.xshardingjdbc.config.database.PreciseDatabaseShardingAlgorithm
spring.shardingsphere.sharding.tables.book.database-strategy.standard.rangeAlgorithmClassName=cn.xwl.xshardingjdbc.config.database.RangeDatabaseShardingAlgorithm

# 数据表分片字段
spring.shardingsphere.sharding.tables.book.table-strategy.standard.sharding-column=create_time
# 数据表分表策略
spring.shardingsphere.sharding.tables.book.table-strategy.standard.preciseAlgorithmClassName=cn.xwl.xshardingjdbc.config.table.PreciseTableShardingAlgorithm
spring.shardingsphere.sharding.tables.book.table-strategy.standard.rangeAlgorithmClassName=cn.xwl.xshardingjdbc.config.table.RangeTableShardingAlgorithm

# 打印sql
spring.shardingsphere.props.sql.show=true




2.代码编写

同分库,分表两篇文中的一致,这里不粘贴了,项目地址 本测试Demo的Gitee地址

到此这篇关于SpringBoot+MybatisPlus实现sharding-jdbc分库分表的示例代码的文章就介绍到这了,更多相关SpringBoot MybatisPlus sharding-jdbc分库分表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java使用回溯法求解数独示例

    java使用回溯法求解数独示例

    这篇文章主要介绍了java使用回溯法求解数独示例,大家参考使用吧
    2014-01-01
  • java8 stream 由一个list转化成另一个list案例

    java8 stream 由一个list转化成另一个list案例

    这篇文章主要介绍了java8 stream 由一个list转化成另一个list案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Spring websocket并发发送消息异常的解决

    Spring websocket并发发送消息异常的解决

    本文主要介绍了 Spring websocket并发发送消息异常的解决,当多个线程同时尝试通过 WebSocket 会话发送消息时,会抛出异常,下面就来解决一下,感兴趣的可以了解一下
    2023-09-09
  • Spring Boot中使用Redis实战案例

    Spring Boot中使用Redis实战案例

    redis作为一个高性能的内存数据库,如果不会用就太落伍了,之前在 node.js中用过 redis,本篇记录如何将 redis 集成到 spring boot 中,下面这篇文章主要给大家介绍了关于Spring Boot中使用Redis的相关资料,需要的朋友可以参考下
    2023-04-04
  • Java实现简单的五子棋小游戏

    Java实现简单的五子棋小游戏

    这篇文章主要为大家详细介绍了Java实现简单的五子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Java中的Sentinel持久化规则启动

    Java中的Sentinel持久化规则启动

    这篇文章主要介绍了Java中的Sentinel持久化规则启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法

    SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法

    本篇文章主要介绍了SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法,详细的介绍了Spring Schedule 与 Quartz 整合的两种方法,有兴趣的可以了解一下。
    2017-03-03
  • SpringBoot注册Filter的两种实现方式

    SpringBoot注册Filter的两种实现方式

    这篇文章主要介绍了SpringBoot注册Filter的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • IntelliJ IDEA自定义代码提示模板Live Templates的图文教程

    IntelliJ IDEA自定义代码提示模板Live Templates的图文教程

    这篇文章主要介绍了IntelliJ IDEA自定义代码提示模板Live Templates,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • JavaSE实现三子棋游戏

    JavaSE实现三子棋游戏

    这篇文章主要为大家详细介绍了JavaSE实现三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论