springboot+shardingjdbc 按照月份分出12个表,单库,配置文件详解
时间: 2023-08-18 09:07:14 浏览: 132
好的,下面是详细的配置步骤:
1. 引入依赖
在 pom.xml 文件中添加以下依赖:
```xml
<!-- Sharding JDBC Starter for Spring Boot -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${sharding-jdbc.version}</version>
</dependency>
```
其中,`${sharding-jdbc.version}` 为 Sharding JDBC 的版本号。你可以在 Maven 中央仓库查找最新版本。
2. 配置数据源
在 application.yml 文件中添加数据源配置,示例如下:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false
username: root
password: 123456
```
这里我们使用 MySQL 作为数据库,其中 `test` 为数据库名称,`root` 和 `123456` 分别是数据库的用户名和密码。
3. 配置 Sharding JDBC
在 application.yml 文件中添加 Sharding JDBC 的配置,示例如下:
```yaml
spring:
shardingsphere:
datasource:
names: ds0
ds0:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/test?useSSL=false
username: root
password: 123456
sharding:
tables:
order:
actualDataNodes: ds0.order_${0..11}
tableStrategy:
inline: order_${new java.text.SimpleDateFormat("MM").format(new java.util.Date())}
keyGenerateStrategy:
column: id
type: SNOWFLAKE
```
其中:
- `datasource.names`:数据源名称,这里我们只有一个数据源,所以为 `ds0`。
- `datasource.ds0.type`:数据源类型,这里使用 HikariCP 数据源。
- `datasource.ds0.driver-class-name`:数据库驱动类名。
- `datasource.ds0.jdbc-url`:数据库连接 URL。
- `datasource.ds0.username` 和 `datasource.ds0.password`:数据库用户名和密码。
- `sharding.tables.order.actualDataNodes`:分表配置,使用 `${0..11}` 表示分为 12 张表,表名为 `order_0` 到 `order_11`。
- `sharding.tables.order.tableStrategy.inline`:分表策略,这里使用月份作为后缀,例如 1 月的表名为 `order_1`。
- `sharding.tables.order.keyGenerateStrategy`:主键生成策略,这里使用 Snowflake 算法生成主键。
4. 测试
完成以上配置之后,我们可以在代码中使用自动生成的 `OrderMapper`,例如:
```java
@Autowired
private OrderMapper orderMapper;
@Test
public void testInsert() {
Order order = new Order();
order.setUserId(1L);
order.setOrderId(1L);
order.setCreateTime(new Date());
orderMapper.insert(order);
}
```
这样插入数据时,就会根据月份自动分到对应的表中。
以上就是使用 Spring Boot 和 Sharding JDBC 按照月份分表的详细配置。
阅读全文