sharding-jdbc使用

示例代码

    https://gitee.com/chenfei01/my-zb/tree/master/learn-sharding-jdbc

简介

    sharding-jdbc是当当提供的开源的分库分表,读写分离工具,已jar包形式提供服务,不需要中间层,不需要部署

    功能简介:

        分库分表

        读写分离

        分布式主键(64位   一位符号为 0  + 41位时间 + 10工作进程 + 12位序列)

        多样化配置(编码+spring命名空间+yaml配置)

    官方地址  http://shardingjdbc.io/index_zh.html

使用

    1、maven依赖

            

<sharding.jdbc.version>1.5.4</sharding.jdbc.version>
<dependency>
   <groupId>com.dangdang</groupId>
   <artifactId>sharding-jdbc-core</artifactId>
   <version>${sharding.jdbc.version}</version>
</dependency>
<dependency>
   <groupId>com.dangdang</groupId>
   <artifactId>sharding-jdbc-config-spring</artifactId>
   <version>${sharding.jdbc.version}</version>
</dependency>
<dependency>
   <groupId>com.dangdang</groupId>
   <artifactId>sharding-jdbc-config-yaml</artifactId>
   <version>${sharding.jdbc.version}</version>
</dependency>

    2、数据源配置

        分库策略,对customer_id取模   algorithm-class对应策略实现类

<rdb:strategy id="couponStrategy" sharding-columns="customer_id" algorithm-class="com.zb.qjs.market.config.shard.DatabaseShardingAlgorithm" />

        配置数据源:

          

        主从配置,读写分离数据源

<rdb:master-slave-data-source id="sharding_0"
      master-data-source-ref="master_0"
      slave-data-sources-ref="master_0_slave" />

<rdb:master-slave-data-source id="sharding_1"
      master-data-source-ref="master_1"
      slave-data-sources-ref="master_1_slave" />

        分库数据源配置 

<rdb:data-source id="shardingDataSource">
    <rdb:sharding-rule data-sources="sharding_0,sharding_1,master_slave">
        <rdb:table-rules>
            <!-- 不需要分表,table-strategy不需要配置 -->
            <rdb:table-rule logic-table="ganjs_market_coupon" database-strategy="couponStrategy"
                            data-source-names="sharding_0,sharding_1" />

            <rdb:table-rule logic-table="ganjs_market_coupon_sync_log" database-strategy="syncLogStrategy"
                            data-source-names="sharding_0,sharding_1" />

            <!-- 不需要分库分表,database-strategy和table-strategy都不需要配置 -->
            <rdb:table-rule logic-table="ganjs_market_coupon_sync_error" data-source-names="master_slave" />
        </rdb:table-rules>

        <rdb:default-database-strategy sharding-columns="none"
                                       algorithm-class="com.dangdang.ddframe.rdb.sharding.api.strategy.database.NoneDatabaseShardingAlgorithm"/>
        <rdb:default-table-strategy sharding-columns="none"
                                    algorithm-class="com.dangdang.ddframe.rdb.sharding.api.strategy.table.NoneTableShardingAlgorithm" />
    </rdb:sharding-rule>
    <rdb:props>
        <prop key="sql.show">${datasource.sql.show}</prop>
    </rdb:props>
</rdb:data-source>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="shardingDataSource" />
    <property name="mapperLocations" value="classpath*:sqlmap/*.xml" />
    <property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>

            分表配置,同上,如图

        使用如上配置后,请求先根据customer_id取模获取对应数据库数据源,根据读写使用主从数据库,写是主库,读为从库

注意事项:

    

SQL语句限制

有限支持子查询

不支持HAVING

不支持OR,UNION 和 UNION ALL

不支持特殊INSERT

每条INSERT语句只能插入一条数据,不支持VALUES后有多行数据的语句

不支持DISTINCT聚合

不支持dual虚拟表

不支持SELECT LAST_INSERT_ID()

不支持CASE WHEN


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值