シャーディングJDBC統合SpringBoot 2.xとMyBatisのプラスは、ライブラリのサブテーブルを分割します

シャーディングJDBC統合SpringBoot 2.xとMyBatisのプラスは、ライブラリのサブテーブルを分割します

シングルテーブルデータ交換フローテーブルの量は数十億ドルを持って、シャーディング-JDBCは、サブライブラリのサブテーブルを選択しました。MyBatisのMyBatisの-Plusとまったく同じように統合し、これを参照することができますまた、MyBatisのを統合する必要があります。シャーディング-JDBCを採用し
、サブテーブルウィジェットの原因は設定が容易であるように、単に輸入ミドルウェア、サービスコードと非侵襲のために頼る必要なく、Mavenのジャーパッケージを追加します。現在、実際の業務で使用すると、単一のデータベーステーブルを超えている、テーブルがトランザクションフロー100に分割されています。

設定は、利用可能な生産環境、プロのテストをテストしました。

次のようにサブライブラリーのサブテーブル関連のPOMファイルは次のとおりです。

<!-- 提供mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<!--mybatis-plus自动的维护了mybatis以及mybatis-spring的依赖,
             在springboot中这三者不能同时的出现,避免版本的冲突-->

<!--MyBatis-Plus相关依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.0.1</version>
</dependency>

<!--如果整合MyBatis而不是MyBatis-Plus,用这个依赖-->
<!--<dependency>-->
<!--<groupId>org.mybatis.spring.boot</groupId>-->
<!--<artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--<version>2.0.1</version>-->
<!--</dependency>-->

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.0.0-RC2</version>
</dependency>

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-namespace</artifactId>
    <version>4.0.0-RC2</version>
</dependency>

SpringBoot設定ファイルを次のように

spring:
  shardingsphere:
    datasource:
#      数据库名称,可自定义,可以为多个
#      names: ds0,ds1
      names: ds0
      ds0:
#        采用的数据库连接池
        type: com.zaxxer.hikari.HikariDataSource
#        JDBC连接Mysql6 com.mysql.cj.jdbc.Driver时,需要指定时区serverTimezone,若采用com.mysql.jdbc.Driver则无需指定
        driver-class-name: com.mysql.cj.jdbc.Driver
#        url是数据库的 JDBC URL,而jdbc-url是用来创建连接的 JDBC URL。Hikari没有url属性,所以这里用jdbc-url
        jdbc-url: jdbc:mysql://10.10.10.101:3306/transaction?&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong
        username: 昼屿
        password: 昼屿

    sharding:
      tables:
#      需要进行分表的逻辑表名,用MyBatis或者MyBatis-Plus操作数据库时只需要操作逻辑表即可,xml文件也只需要配置逻辑表
        tranasction:
#        实际的表结点,分了100个表,表名为tranasction0-tranasction99,
          actual-data-nodes: ds0.tranasction$->{0..99}
#          分表策略
          table-strategy:
#          主键生成策略,这里采用的是Sharding默认的雪花算法作为分布式唯一id算法
            key-generator:
              column: id
              type: SNOWFLAKE
#            分表策略,我在交易流水表这选择的策略是根据用户id分表,可以结合具体业务,根据时间分表或者根据其他参数分表
            inline:
              sharding-column: uid
              algorithm-expression: tranasction$->{uid % 100}

    props:
#      是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
      sql:
        show: true

#MyBatis-Plus的相关配置,如果采用MyBatis可以忽略此部分
mybatis-plus:
  # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/com.exchange.mapper/*Mapper.com.exchange.mapper
  # 如果是放在resource目录 classpath:/com.exchange.mapper/*Mapper.com.exchange.mapper
  mapper-locations: classpath:/mapper/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.exchange.yourpackage.entity
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    #若采用雪花算法生成id,需要在生成的实体类中将id的type = IdType.AUTO去掉
    id-type: 0
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 2
    #驼峰下划线转换
    db-column-underline: true
    #刷新mapper 调试神器
    #refresh-mapper: true
    #数据库大写下划线转换
    #capital-mode: true
    # Sequence序列接口实现类配置
    #逻辑删除配置(下面3个配置)
    logic-delete-value: Y
    logic-not-delete-value: N
    #sql-injector: com.nky.pork.quality.standard.conf.MybatisPlusConfig
    configuration:
      #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
      map-underscore-to-camel-case: true
      cache-enabled: false
      #配置JdbcTypeForNull, oracle数据库必须配置
      jdbc-type-for-null: 'null'

#是否输出Mybatis-Plus代执行的SQL语句
logging:
  level:
    com.exchange.yourpackage.dao: trace

server:
  port: 6666
  servlet:
    context-path: /zhouYu

非侵襲性のためにシャーディングJDBCは、ライブラリサブテーブル方式分割されていないエンティティサービスコードテーブル操作を使用する直前に、論理テーブルは、サブライブラリサブテーブルの後に動作させることができます。PageInfoプラグインはまた、ページングと完全に両立させることができます。

おすすめ

転載: www.cnblogs.com/bestJavaCoding/p/11779478.html