# 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> recordList; } ```