国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 利用Sharding-Jdbc組件實現分表

利用Sharding-Jdbc組件實現分表

2021-05-20 14:12huangheng_01 Java教程

這篇文章主要為大家詳細介紹了利用Sharding-Jdbc組件實現分表,具有一定的參考價值,感興趣的小伙伴們可以參考一下

看到了當當開源的sharding-jdbc組件,它可以在幾乎不修改代碼的情況下完成分庫分表的實現。摘抄其中一段介紹:

sharding-jdbc直接封裝jdbc api,可以理解為增強版的jdbc驅動,舊代碼遷移成本幾乎為零:

  • 可適用于任何基于java的orm框架,如:jpa, hibernate, mybatis, spring jdbc template或直接使用jdbc。
  • 可基于任何第三方的數據庫連接池,如:dbcp, c3p0, bonecp, druid等。
  • 理論上可支持任意實現jdbc規范的數據庫。雖然目前僅支持mysql,但已有支持oracle,sqlserver,db2等數據庫的計劃。

先做一個最簡單的試用,不做分庫,僅做分表。選擇數據表bead_information,首先復制成三個表:bead_information_0、bead_information_1、bead_information_2

利用Sharding-Jdbc組件實現分表

測試實現過程

前提:已經實現srping+mybatis對單庫單表做增刪改查的項目。

1、修改pom.xml增加dependency

?
1
2
3
4
5
6
7
8
9
10
<dependency>
  <groupid>com.dangdang</groupid>
  <artifactid>sharding-jdbc-core</artifactid>
  <version>1.4.2</version>
 </dependency>
 <dependency>
  <groupid>com.dangdang</groupid>
  <artifactid>sharding-jdbc-config-spring</artifactid>
  <version>1.4.0</version>
</dependency>

2、新建一個sharding-jdbc.xml文件,實現分庫分表的配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:rdb="http://www.dangdang.com/schema/ddframe/rdb"
 xsi:schemalocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.dangdang.com/schema/ddframe/rdb
   http://www.dangdang.com/schema/ddframe/rdb/rdb.xsd">
 
 
 
 <!-- 配置數據源 -->
 <bean name="datasource" class="com.alibaba.druid.pool.druiddatasource" init-method="init" destroy-method="close">
 <property name="url" value="jdbc:mysql://localhost:3306/beadhouse" />
 <property name="username" value="root" />
 <property name="password" value="123456" />
 </bean>
   
 <rdb:strategy id="tableshardingstrategy" sharding-columns="id" algorithm-class="com.springdemo.utill.membersinglekeytableshardingalgorithm"/>
 
 <rdb:data-source id="shardingdatasource">
 <rdb:sharding-rule data-sources="datasource">
  <rdb:table-rules>
  <rdb:table-rule logic-table="bead_information" actual-tables="bead_information_${0..2}" table-strategy="tableshardingstrategy"/>
  </rdb:table-rules>
 </rdb:sharding-rule>
 </rdb:data-source>
 
 <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
 <property name="datasource" ref="shardingdatasource" />
 </bean>
</beans>

3、將文件引入spring配置文件中。

需要修改幾個地方,把sqlsessionfactory和transactionmanager原來關聯的datasource統一修改為shardingdatasource(這一步作用就是把數據源全部托管給sharding去管理)

利用Sharding-Jdbc組件實現分表

4、實現分表(分庫)邏輯,我們的分表邏輯類需要實現singlekeytableshardingalgorithm接口的三個方法dobetweensharding、doequalsharding、doinsharding

(取模除數需要按照自己需求改變,我這里分3個表,所以除以3)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.collection;
import java.util.linkedhashset;
import com.dangdang.ddframe.rdb.sharding.api.shardingvalue;
import com.dangdang.ddframe.rdb.sharding.api.strategy.table.singlekeytableshardingalgorithm;
import com.google.common.collect.range;
public class membersinglekeytableshardingalgorithm implements singlekeytableshardingalgorithm<integer> {
 
 @override
 public collection<string> dobetweensharding(collection<string> tablenames, shardingvalue<integer> shardingvalue) {
 collection<string> result = new linkedhashset<string>(tablenames.size());
 range<integer> range = (range<integer>) shardingvalue.getvaluerange();
 for (integer i = range.lowerendpoint(); i <= range.upperendpoint(); i++) {
  integer modvalue = i % 3;
  string modstr = modvalue < 3 ? "" + modvalue : modvalue.tostring();
  for (string each : tablenames) {
  if (each.endswith(modstr)) {
   result.add(each);
  }
  }
 }
 return result;
 }
 @override
 public string doequalsharding(collection<string> tablenames, shardingvalue<integer> shardingvalue) {
 integer modvalue = shardingvalue.getvalue() % 3;
 string modstr = modvalue < 3 ? "" + modvalue : modvalue.tostring();
 for (string each : tablenames) {
  if (each.endswith(modstr)) {
  return each;
  }
 }
 throw new illegalargumentexception();
 }
 @override
 public collection<string> doinsharding(collection<string> tablenames, shardingvalue<integer> shardingvalue) {
 collection<string> result = new linkedhashset<string>(tablenames.size());
 for (integer value : shardingvalue.getvalues()) {
  integer modvalue = value % 3;
  string modstr = modvalue < 3 ? "" + modvalue : modvalue.tostring();
  for (string tablename : tablenames) {
  if (tablename.endswith(modstr)) {
   result.add(tablename);
  }
  }
 }
 return result;
 }
}

5、配置完成,可以實現增刪改查測試。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/huangheng01/p/9366325.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久久久久小说 | 黄在线看v| 免费在线观看黄色 | 国产精品国产a | 国产综合亚洲精品一区二 | 亚洲精品二区三区 | 自拍视频网 | 久国产精品韩国三级视频 | 欧美一级全黄 | 天天摸天天干 | 国产999精品久久久影片官网 | 91久久久久久久久久久 | 亚洲精品在线视频 | 国产成人精品网站 | 精品一区二区不卡 | 久草视频免费看 | 欧美一级特黄视频 | 久久久久久婷婷 | 亚洲 激情 在线 | 国产午夜精品一区二区三区免费 | 精品女同一区二区三区在线绯色 | 欧美一级精品 | 黄色一级片a | 在线观看免费毛片视频 | 亚色成人| 日本在线不卡视频 | 日韩在线成人 | 国产精品一区在线观看 | 亚洲综合在线播放 | 亚洲国产精品久久久 | 欧美性福| 自拍视频网站 | 欧美日韩一区在线 | 国产一区二区三区免费观看 | 亚洲免费视频在线观看 | 久久精品亚洲精品国产欧美kt∨ | 久久久亚洲精品中文字幕 | 爱爱h视频 | 久久99精品久久久久久园产越南 | 亚洲第一免费播放区 | 羞羞视频在线免费 |