Autotable Usage

Automation

AutoTable 框架完整使用指南。基于 JDBC 的自动建表框架(非 MyBatis 依赖),支持 9 种数据库。覆盖注解配置、多数据库适配、生命周期钩子、SPI 扩展、SQL 审计、数据初始化、多数据源等。当用户询问 AutoTable 的用法、注解、配置、扩展、最佳实践时激活。

Install

openclaw skills install autotable-usage

AutoTable 完整使用指南

AutoTable 是一个基于 JDBC(commons-dbutils)的自动维护数据库表结构的 Java 框架,不依赖任何 ORM 框架,可与 MyBatis/MyBatis-Plus/MyBatis-Flex/JPA 等共存。

快速定位

用户问题参考文档
如何安装、启用、定义实体references/quick-start.md
某个注解的完整属性、用法references/annotation-reference.md
Spring Boot / Solon 配置项references/configuration.md
生命周期回调、拦截器references/lifecycle.md
MySQL / Doris / PostgreSQL 专属功能references/database-specific.md
类型映射、自定义类型转换references/type-mapping.md
多数据源配置references/multi-datasource.md
生产部署、测试、最佳实践references/best-practices.md
内部架构、SPI 扩展、自定义策略references/architecture.md

核心概念速查

运行模式(RunMode)

模式说明适用场景
update增量更新表结构(默认)开发环境
validate仅校验,不一致则报错生产环境
create删表重建(⚠️ 丢数据)测试环境
none不做任何处理禁用

支持数据库

MySQL、MariaDB、PostgreSQL、Oracle、SQLite、H2、Doris、达梦(DM)、人大金仓(KingBase)

注解层级

@AutoTable (类级) → 声明建表
├── @TableIndex (类级,组合索引,可重复)
├── @MysqlEngine / @MysqlCharset (MySQL 类级)
├── @MysqlTableFullTextIndex (MySQL 全文索引)
├── @DorisTable (Doris 类级)
│
@AutoColumn (字段级) → 聚合配置
├── @ColumnName / @ColumnType / @ColumnNotNull
├── @ColumnDefault / @ColumnComment
├── @PrimaryKey / @AutoIncrement
├── @Index (字段级索引)
├── @Ignore (忽略字段)
├── @MysqlFullTextIndex / @MysqlColumnCharset 等
├── @DorisColumn
└── @AutoColumns (多数据库适配容器)

最小依赖

<!-- Spring Boot(兼容 2.x 和 3.x) -->
<dependency>
    <groupId>org.dromara.autotable</groupId>
    <artifactId>auto-table-spring-boot-starter</artifactId>
    <version>2.5.17</version>
</dependency>

<!-- Solon -->
<dependency>
    <groupId>org.dromara.autotable</groupId>
    <artifactId>auto-table-solon-plugin</artifactId>
    <version>2.5.17</version>
</dependency>

启用方式

// Spring Boot
@EnableAutoTable
@SpringBootApplication
public class Application { ... }

// Solon
@EnableAutoTable  // 标注在 @SolonMain 类上
public class Application { ... }

最小实体

@Data
@AutoTable(comment = "用户表")
public class User {
    @PrimaryKey(autoIncrement = true)
    private Long id;

    @AutoColumn(comment = "用户名", notNull = true)
    private String username;
}

关键陷阱

  1. 基于 JDBC,非 MyBatis:pom.xml 旧版 description 写的"Mybatis下"是历史遗留,实际核心依赖 commons-dbutils
  2. create 模式会删表:测试完务必切回 update
  3. auto-drop-table/column 生产环境必须关闭,会造成数据丢失
  4. 索引名前缀:自动生成 auto_idx_ 前缀,超长时 hash 处理
  5. 父类字段排序super-insert-position 默认 after(父类字段在子类后面),不符合直觉时可改为 before
  6. MySQL 云数据库:部分云厂商禁止 ALTER TABLE 中混用 DROP 和 ADD,需开启 mysql.alter-table-separate-drop
  7. Doris 大表更新:默认超过 1GB 跳过更新(doris.update-limit-table-data-length),需按需调整