Spring Boot integra Sharding JDBC para implementar la división de tablas de la base de datos MySQL

Fragmentar jdbc es realmente demasiado simple. Hace algún tiempo, el negocio de mi empresa necesitaba utilizar esta herramienta para crear subtablas, lo aprendí solo y lo terminé en mucho tiempo.

Vayamos directo al código, es demasiado simple y no hay nada que introducir, hay comentarios en la configuración.

dependencias maven:

        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
            <version>5.1.1</version>
        </dependency>

Propiedades de las dos tablas:

CREATE TABLE `test_sharding0` (
  `sharding_id` varchar(255) NOT NULL,
  `sharding_name` varchar(255) NOT NULL,
  `sharding_age` varchar(255) NOT NULL,
  PRIMARY KEY (`sharding_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `test_sharding1` (
  `sharding_id` varchar(255) NOT NULL,
  `sharding_name` varchar(255) NOT NULL,
  `sharding_age` varchar(255) NOT NULL,
  PRIMARY KEY (`sharding_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 Configuración de aplicación.properties:

#------------------------基本配置
# 应用名称
spring.application.name=sharding-jdbc-demo
# 开发环境设置
spring.profiles.active=dev
# 内存模式
spring.shardingsphere.mode.type=Memory
# 打印SQl
spring.shardingsphere.props.sql-show=true

#------------------------数据源配置
# 配置真实数据源
spring.shardingsphere.datasource.names=server-bug

# 配置数据源
spring.shardingsphere.datasource.server-bug.type=com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.server-bug.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.server-bug.jdbc-url=jdbc:mysql://ip:端口/数据库名称?rewriteBatchedStatements=true
spring.shardingsphere.datasource.server-bug.username=用户名
spring.shardingsphere.datasource.server-bug.password=密码

#------------------------标准分片表配置(数据节点配置)
# 由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持 inline 表达式。
# server-bug0.test_sharding0,server-bug0.test_sharding1,server-bug1.test_sharding0,server-bug1.test_sharding1
spring.shardingsphere.rules.sharding.tables.test_sharding.actual-data-nodes=server-bug.test_sharding$->{0..1}
#spring.shardingsphere.rules.sharding.tables.test_sharding.actual-data-nodes=server-bug.test_sharding0,server-bug.test_sharding1

#------------------------分表策略
# 用于单分片键的标准分片场景
# 分片列名称
spring.shardingsphere.rules.sharding.tables.test_sharding.table-strategy.standard.sharding-column=sharding_id
# 分片算法名称
spring.shardingsphere.rules.sharding.tables.test_sharding.table-strategy.standard.sharding-algorithm-name=alg_hash_mod

#------------------------分片算法配置
# 哈希取模分片算法
# 分片算法类型,有好几种算法的,百度一下一大堆,HASH_MOD这种是通过哈希取模
spring.shardingsphere.rules.sharding.sharding-algorithms.alg_hash_mod.type=HASH_MOD
# 分片算法属性配置
spring.shardingsphere.rules.sharding.sharding-algorithms.alg_hash_mod.props.sharding-count=2

#------------------------分布式序列策略配置
# 分布式序列列名称
spring.shardingsphere.rules.sharding.tables.test_sharding.key-generate-strategy.column=sharding_id
# 分布式序列算法名称
spring.shardingsphere.rules.sharding.tables.test_sharding.key-generate-strategy.key-generator-name=alg_snowflake

#------------------------分布式序列算法配置
# 分布式序列算法--推荐使用雪花算法,这个可以代替@TableId注解
spring.shardingsphere.rules.sharding.key-generators.alg_snowflake.type=SNOWFLAKE


Todos los demás códigos se pueden leer y escribir normalmente (aquí se usa mybatis plus, será lo mismo si no se usa):

    @GetMapping("/addTestSharding")
    public void addTestSharding(){
        for(int i=0; i<10; i++){
            TestSharding testSharding = new TestSharding();
            testSharding.setShardingName("小明"+i);
            testSharding.setShardingAge("年龄"+i);
            testShardingService.save(testSharding);
        }
    }

Esta es solo una prueba de dos tablas. Si hay más tablas, puede escribirlas en archivos separados o escribirlas directamente en la clase Java. También puede escribirlas en la base de datos. Puede simplemente leerlas al cargar el archivo. archivo de configuración.

Finalmente mira el efecto:

 Hágalo y termine el día, ¡es así de simple!

 

Supongo que te gusta

Origin blog.csdn.net/xiaobug_zs/article/details/130588851
Recomendado
Clasificación