```xml
<dependency>
    <groupId>site.sorghum.ddl</groupId>
    <artifactId>sorghum-ddl-solon-plugin</artifactId>
    <version>2025.04.17-SNAPSHOT</version>
</dependency>
<!--具体ORM框架-->
<dependency>
    <groupId>site.sorghum.ddl</groupId>
    <artifactId>sorghum-ddl-[ORM框架]</artifactId>
    <version>2025.04.17-SNAPSHOT</version>
</dependency>
```


> 最新开发进度/版本查看
[sorghum-ddl](https://gitee.com/cmeet/sorghum-ddl)


### 1、描述

**高粱DDL**插件，根据 Java 实体，自动映射成数据库的表结构。
支持：版本对比/自动维护等功能.

数据库：**Mysql/PgSql**

自动化生成数据库建表语句（DDL） 的智能工具。
支持多种主流数据库语法，旨在提升开发者在数据库设计阶段的效率，避免手动编写SQL的繁琐和错误。

### 2、数据库支持

> 测试会有遗漏！求大佬们轻拍测试，喜欢请⭐Star⭐

> 部分测试版本

| 数据库          | 测试版本  | 说明                         |
|--------------|-------|----------------------------|
| ✅ MariaDB    | 8.3   | 协议使用MySQL，即`jdbc:mysql://`                           |
| ✅ Mysql      | 应该差不多 |  |
| ✅ PostgreSQL | 17.4  |                            |
| 其他数据库        | 未测试   | 有需欢迎说                      |

### 3、快速上手

#### 第 1 步：添加Maven依赖 如果是快照版本，请添加快照仓库


```xml [Solon应用]
<!--引入快照库-->
<repositories>
    <repository>
        <id>apache_snapshot</id>
        <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
</repositories>

<!--依赖引入-->
<!--依赖引入-->

<!--sorghum-ddl-mybatis-->
<!--sorghum-ddl-mybatis-flex-->
<!--sorghum-ddl-mybatis-plus-->
<!--sorghum-ddl-wood-->
<dependencies>
    <dependency>
        <groupId>site.sorghum.ddl</groupId>
        <artifactId>sorghum-ddl-[ORM框架]</artifactId>
        <version>2025.04.17-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>site.sorghum.ddl</groupId>
        <artifactId>sorghum-ddl-solon-plugin</artifactId>
        <version>2025.04.17-SNAPSHOT</version>
    </dependency>
</dependencies>
```


#### 第 2 步：配置文件

```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
```

#### 第 3 步：启动应用


```java [Solon应用]
@SolonMain
public class DemoSorghumDdlApplication {
    public static void main(String[] args) {
        Solon.start(Application.class, args);
    }
}
```

#### 第 5 步：重启项目

查看控制台信息与数据库表和字段是否生成

### 注解支持
```
@DdlAlias

- 类注解： 用于指定实体类的别名，在生成DDL时，将使用指定的别名作为表名。
- 字段注解：用于指定实体类字段的别名，在生成DDL时，将使用指定的别名作为字段名。 

@DdlExclude

- 类注解： 用于排除实体类是否跳过生成DDL。
- 字段注解：用于排除实体类字段是否跳过生成DDL。

@DdlId

- 字段注解：用于指定实体类字段为主键，在生成DDL时，将使用指定的主键作为主键。
- 支持联合ID
- 
@DdlType

- 字段注解：用于指定实体类字段的数据类型，在生成DDL时，将使用指定的数据类型作为字段类型。
- 支持自定义类型：value
- 支持长度 精度 是否可谓空

@DdlIndex

- 字段注解：用于指定实体类字段是否需要创建索引，在生成DDL时，将使用指定的索引作为索引。
- 支持联合索引,按照group区分是否为同一条索引.
- 支持唯一索引：unique=true

@DdlWeight

- 字段注解：用于指定实体类字段的权重，在生成DDL时，将使用指定的权重作为字段权重。
- 用于建表排序，权重越高排越前。

除此之外

- 支持mybatis-plus、mybatis-flex、wood等注解。
```

### 具体参考官方文档：

[https://gitee.com/cmeet/sorghum-ddl](https://gitee.com/cmeet/sorghum-ddl#%E6%B3%A8%E8%A7%A3%E6%96%87%E6%A1%A3)
