sharding-sphere之分库分表demo

需要准备的环境
idea 2017.3月
jdk1.8
maven3.1.1
 请提前将idea与Maven、jdk配置好,本次项目用的都是比较新的

涉及技术栈:

springmvc

spring4.3.18

mybatisplus3.0.5

sharding-sphere3.1.0

搭建demo步骤
1、用IDEA新建一个MAVEN webapp项目,

sharding-sphere之分库分表demo

点击next

sharding-sphere之分库分表demo

然后点击next,直到Finish。

2、构建目录结构如下:
我这里列出的是搭建完了之后所有的目录和文件,诸位先把目录文件建起来,然后我在给出文件内容

sharding-sphere之分库分表demo

这里的目录建好之后还需要设置一下,让idea识别目录作用,选择File-Project Structure

sharding-sphere之分库分表demo

设置完成后点击OK.

3、配置文件内容
关于pom.xml
版本号统一管理:

sharding-sphere之分库分表demo

a、集成spring及springmvc, 集成的pom.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

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

<!-- spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring.version}</version>

</dependency>

b、集成mybatis-plus

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus</artifactId>

<version>${mybatis.plus.version}</version>

</dependency>

<!-- mysql连接 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>${mysql.connector.java.version}</version>

</dependency>

<!-- 数据源 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>${druid.version}</version>

</dependency>

c、集成sharding-sphere

<dependency>

<groupId>io.shardingsphere</groupId>

<artifactId>sharding-jdbc-core</artifactId>

<version>${sharding-jdbc.version}</version>

</dependency>

<dependency>

<groupId>io.shardingsphere</groupId>

<artifactId>sharding-jdbc-spring-namespace</artifactId>

<version>${sharding-jdbc.version}</version>

</dependency>

jdbc.properties的配置,是多数据源的配置

sharding-sphere之分库分表demo

spring-mvc.xml

sharding-sphere之分库分表demo

数据源的xml配置
spring-datasource.xml配置文件内容如下:

sharding-sphere之分库分表demo

sharding与spring的集成配置
spring-sharding.xml配置文件,内容如下:

sharding-sphere之分库分表demo

spring-config.xml ,没有做什么,主要是扫描包的问题:

sharding-sphere之分库分表demo

到这里基本上环境就搭建完成了,下面开始测试
需要创建的表:

以及对于的controller、mapper、service、domain等类,还有一个是数据库以及数据库表分片的算法,这个是此次分库分表的核心所在。

DatabaseShardingAlgorithm,数据库的分片算法是按照spring-sharding.xml中配置的策略那样,根据user_id 对2 取模的值,此处的2,是代表有两个数据库。
比如:user_id=45, 那么45%2=1, 那么属于separate_entity_1这个数据库。

同理对于对数据库表的分片是按照TableShardingAlgorithm,根据配置,按照order_id进行对数据库表的个数取模的值,决定是哪个表
例如:335421646632386561%2=1, 那么就在t_order_1表。