# sorghum-ddl
**Repository Path**: cmeet/sorghum-ddl
## Basic Information
- **Project Name**: sorghum-ddl
- **Description**: 高粱DDL Java实体类一键转数据库
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 10
- **Forks**: 1
- **Created**: 2025-04-08
- **Last Updated**: 2025-08-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: ddl, wood, mybatis-flex, SpringBoot, solon
## README
> [欢迎测试]
### ✨ 项目简介
高粱DDL 是一款专注于 **自动化生成数据库建表语句(DDL)** 的智能工具🚀,支持多种主流数据库语法,旨在提升开发者在数据库设计阶段的效率,避免手动编写SQL的繁琐和错误。
#### 🎯 现已用于 **anno-admin实体类映射到数据库**!
- 支持**mybatis**
- 支持**mybatis-plus**
- 支持**mybatis-flex**
- 支持**wood**
---
### **🔧 核心功能**
1.**⚡ 一键生成DDL**
- 根据用户输入的字段、类型、约束等参数,自动生成规范的建表SQL语句📑。
- 支持索引创建SQL语句
- 支持数据库与本地进行对比生成增量SQL.
- 支持从数据库中获取当前表信息
- 支持 MySQL[已测试]、PostgreSQL[已测试]、~~Oracle~~[待测试]、~~SQL Server~~[待测试] 四种数据库语法,适配不同项目需求🔌。
2.**🔄 多ORM框架适配**
- 现在已支持**mybatis**、**mybatis-plus**、**mybatis-flex** 和 **wood** 🎯
- 支持原有orm框架的注解支持,优先级更高!
---
### **💡 使用场景**
- **🚀 快速原型开发**:在项目初期快速生成数据库表结构。
- **🌍 跨数据库迁移**:将已有表结构转换为其他数据库的语法。
- **👥 团队协作(可能)**:统一DDL规范,减少人工编写差异。
---
### **🌟 项目亮点**
- **📦 轻量化**:专注于DDL生成,无需复杂配置。
- **🗃️ 多数据库支持**:覆盖主流关系型数据库。
- **🔮 扩展性**:未来可能支持更多语言和框架。
---
### **更新记录**
- 新增SQL执行记录文件.
- 新增支持禁止所有更新执行配置,更加安全.
- 支持多实体类@Ddl合并
- 新增@Ddl强过滤功能 ddlWhite配置
- 修复jar包无法扫描的问题
#### 2025.08.08
- 支持自定义类加载器
---
### 使用方法:
#### spring-boot 支持 2.7+
- pom.xml
```xml
apache_snapshot
https://s01.oss.sonatype.org/content/repositories/snapshots/
true
false
```
- pom.xml
```xml
site.sorghum.ddl
sorghum-ddl-[ORM框架]
2025.08.11
site.sorghum.ddl
sorghum-ddl-spring-boot-starter
2025.08.11
```
- application.yml
```yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/xxxxxx?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
username: xxxxxx
password: 123456
sorghum-ddl:
# 配置实体类扫描的包
basePackages:
- site.sorghum.ddl.spring.entity
createTable: true
addColumn: true
addIndex: true
dropColumn: true
dropIndex: true
# 禁止所有执行
banExe: true
# sql执行记录文件
logPath: .\ddl\ddl.sql
# 启用Ddl注解白名单,只处理@Ddl的类 默认false
ddlWhite: true
```
- 启动项目即可
#### solon
- pom.xml
```xml
apache_snapshot
https://s01.oss.sonatype.org/content/repositories/snapshots/
true
false
```
- pom.xml
```xml
site.sorghum.ddl
sorghum-ddl-[ORM框架]
2025.08.11
site.sorghum.ddl
sorghum-ddl-solon-plugin
2025.08.11
```
- application.yml
```yml
solon.dataSources:
"db1!":
class: "com.zaxxer.hikari.HikariDataSource"
jdbcUrl: jdbc:mysql://127.0.0.1:3306/xxxxxx?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
driverClassName: com.mysql.cj.jdbc.Driver
username: xxxxxx
password: xxxxxx
schema: xxxxxx
sorghum-ddl:
basePackages:
- site.sorghum.ddl.solon.entity
createTable: true
addColumn: true
addIndex: true
dropColumn: true
dropIndex: true
# 禁止所有执行
banExe: true
# sql执行记录文件
logPath: .\ddl\ddl.sql
# 启用Ddl注解白名单,只处理@Ddl的类 默认false
ddlWhite: true
```
---
### 注解文档
#### @Ddl
- 类注解: 用于指定实体类的别名,在生成DDL时,将使用指定的别名作为表名。
- 启用DdlWhite时,只扫描@Ddl注解的类
- 字段注解:用于指定实体类字段的别名,在生成DDL时,将使用指定的别名作为字段名。
#### @DdlExclude
- 类注解: 用于排除实体类是否跳过生成DDL。
- 字段注解:用于排除实体类字段是否跳过生成DDL。
#### @DdlId
- 字段注解:用于指定实体类字段为主键,在生成DDL时,将使用指定的主键作为主键。
- 支持联合ID
-
#### @DdlType
- 字段注解:用于指定实体类字段的数据类型,在生成DDL时,将使用指定的数据类型作为字段类型。
- 支持自定义类型:value
- 支持长度 精度 是否可谓空
#### @DdlIndex
- 字段注解:用于指定实体类字段是否需要创建索引,在生成DDL时,将使用指定的索引作为索引。
- 支持联合索引,按照group区分是否为同一条索引.
- 支持唯一索引:unique=true
#### @DdlWeight
- 字段注解:用于指定实体类字段的权重,在生成DDL时,将使用指定的权重作为字段权重。
- 用于建表排序,权重越高排越前。
#### 除此之外
- 支持mybatis-plus、mybatis-flex、wood等注解。
---
## 参与贡献流程
1. **进群讨论**
- 可以在群里抛出您遇到的问题,或许已经有人解决了您的问题。
2. **提 Issue**
- 如果 Issue 列表中已有相关问题,可直接认领该 Issue。
- 若无,请新建一个 Issue 描述问题。
3. **Fork 仓库**
- 复制本项目的仓库到您的账号下。
4. **新建分支**
- 新特性分支命名格式:`feat/#{issue-id}`
- Bug 修复分支命名格式:`fix/#{issue-id}`
5. **本地自测**
- 确保通过所有现有单元测试。
- 为您解决的问题新增单元测试。
6. **提交代码**
- 将修改推送到您的分支。
7. **创建 Pull Request**
- 向本项目发起合并请求。
8. **PR 审核**
- 我会验证和测试您的 PR,通过后将合并至 `dev` 分支,随新版本发布时同步到 `master`。
🎉 被采纳的 PR 贡献者将列入 README 的贡献者列表!
## 许可证
sorghum-ddl 使用Apache2.0许可证。详情请参阅LICENSE文件。