一、 Sharding-jdbc簡介
“Sharding-jdbc是開源的資料庫操作中間件;定位為輕量級Java框架,在Java的JDBC層提供的額外服務,它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架,
官方檔案地址:https://shardingsphere.apache.org/document/current/cn/overview/
本文demo實作了分庫分表功能,如有錯誤,歡迎各位在評論中指出,不勝感激!
二、專案結構
首先創建一個一般的Spring boot專案,專案采用三層架構,
結構圖如下:

POM.xml檔案如下:
![<?xml version="1.0" encoding="UTF-8"?>
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
com.macky
spring-boot-shardingjdbc
0.0.1-SNAPSHOT
spring-boot-shardingjdbc
Demo project for spring-boot-shardingjdbc
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--Mybatis-Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<!--shardingsphere start-->
<!-- for spring boot -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!-- for spring namespace -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-namespace</artifactId>
<version>3.1.0</version>
</dependency>
<!--shardingsphere end-->
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
]
物體類以書本為例
![package com.macky.springbootshardingjdbc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import groovy.transform.EqualsAndHashCode;
import lombok.Data;
import lombok.experimental.Accessors;
]
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(“book”)
public class Book extends Model {
private int id;
private String name;
private int count;
}]
開放保存和查詢兩個介面,代碼如下:
