# ddl-auto-spring-boot-starter
**Repository Path**: cmyttxshhxx/ddl-auto-spring-boot-starter
## Basic Information
- **Project Name**: ddl-auto-spring-boot-starter
- **Description**: 数据库脚本自迭代工具
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-18
- **Last Updated**: 2025-07-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ddl-auto-spring-boot-starter
## 介绍
> 这是一个数据库自迭代工具,通过资源路径中的sql,csv文件实现自动建库/表/数据插入 目前支持mysql
## quick start
### 引入依赖
```xml
com.cmy
ddl-auto-spring-boot-starter
1.0.0
```
### 启用ddl-auto
**注意需要将数据库名在yaml中显示申明**
> application.yml
```yaml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.name}
username: root
password: 123456
name: dbname
spring.auto-ddl.enable: true
```
### 存放资源文件
**在资源路径下存放.sql文件或者.csv文件**
同名文件,按照以下优先级生效,**不同名文件,以下所有路径均会生效**
- file:./resources/db/migration
- file:./db/migration
- classpath:/db/migration
**sql文件说明**
> 文件名要求:
V版本号__描述.sql
如
- V1.0.0__init.sql
- V1.0.1__xxx.sql
- V2024.03.05__xxx.sql
**csv文件说明**
> 文件名要求:
R__唯一描述.csv
如
R__user.sql
> 文件内容要求
| 表名 | | |
| ------- | ------- | ------- |
| true | | |
| column1 | column2 | column3 |
| data1 | data2 | data3 |
第一行第一个单元格为 表名
第二行第一个单元格为 true/false
true:将会先清空表格
false:会将数据通过`com.cmy.service.RecordHandler.distribute(DdlRecord ddlRecord)`方法传递给(下游)实现类
第三行 为表头
后续行 为数据
**注意点**
- csv文件的字段名和值必须严格对应
- 时间格式的单元格格式必须为`yyyy-MM-dd HH:mmss`
- 空字符串和NULL都会被写入NULL
- 如果MySql定义了tinyint 有可能需要在下游处理0,1和Boolean的转换
### 自定义csv数据行为
> 第二行第一个单元格为 false
请实现接口`com.cmy.service.RecordHandler`
并实现实现方法 `distribute(DdlRecord ddlRecord)`
```java
public class DdlRecord {
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private List filedNames;
/**
* 表记录
* key filedName
* value value
*/
private List