本文使用的是spring boot+mybatis+sharding-jdbc+druid。
项目整体结构
单库分表集成
项目背景:
创建一个数据库user0,假设只有一张表t_user需要进行分表,分为2张表t_user0、t_user1,分片字段为主键id,采用取余的分片算法(%2)。
创建对应的数据库及表
create database user0;
CREATE TABLE `t_user0` (
`id` bigint(20) NOT NULL,
`name` varchar(30) DEFAULT NULL COMMENT '名称',
`sex` tinyint(2) DEFAULT NULL COMMENT '性别 0-男,1-女',
`phone` varchar(15) DEFAULT NULL COMMENT '电话',
`email` varchar(30) DEFAULT NULL COMMENT '邮箱',
`password` varchar(20) DEFAULT NULL COMMENT '密码',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `t_user1` (
`id` bigint(20) NOT NULL,
`name` varchar(30) DEFAULT NULL COMMENT '名称',
`sex` tinyint(2) DEFAULT NULL COMMENT '性别 0-男,1-女',
`phone` varchar(15) DEFAULT NULL COMMENT '电话',
`email` varchar(30) DEFAULT NULL COMMENT '邮箱',
`password` varchar(20) DEFAULT NULL COMMENT '密码',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建一个spring boot项目,使用sharding-jdbc-spring-boot-starter集成,本文使用版本为3.0.0。pom.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<groupId>com.chengh</groupId>
<artifactId>dbTest</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<mybatis.version>1.3.0</mybatis.version>
<druid.version>1.1.10</druid.version>
<junit.version>4.12</junit.version>
<sharding.jdbc.version>3.0.0</sharding.jdbc.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>