# zero-acTable **Repository Path**: zero-wsh/zero-acTable ## Basic Information - **Project Name**: zero-acTable - **Description**: 通过实体类自动创建、修改表信息,支持mysql - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: 3.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 5 - **Created**: 2021-06-29 - **Last Updated**: 2025-06-19 ## Categories & Tags **Categories**: database-dev **Tags**: 即是终点亦是起点 ## README # zero-acTable #### 介绍 zero-acTable是将实体类和数据库表结构同步的开源项目。 您只需要使用相关注解就能达到数据库表结构同步,指定初始化脚本就能执行数据初始化,可开启类似flyway功能,同时内置测试demo。 #### 数据库支持 mysql、达梦、sql_server #### 功能介绍 - 兼容MP 排除字段逻辑(static、transient修饰字段和@TableField注解exist=false) - 兼容MP @TableField、@TableName,@TableId注解 - 兼容MP @TableId注解设置自增 - 兼容hibernate @Table、@Column、@Id、@Transient注解 - 兼容hibernate @GeneratedValue注解设置自增 - 兼容swagger @ApiModel、@ApiModelProperty注解设置(表、字段)备注 - 字段上没有任何注解,支持属性名转数据库列名(默认驼峰下划线),字段类型转数据库类型 - 支持约束(主键、唯一键、索引、默认值(sql_server才具有))的创建、修改、删除 - 支持数据初始化 - 忽略表@IgnoreTable,自动建表时指定包下面需要忽略的表 - 排除父类字段@ExcludeSuperField,自动建表时排除父类相关字段 - 增加修改字段逻辑,可指定在类上或者字段上,字段优先于类上 - 增加typeLimit属性,可自定义未支持的类型 - 调整唯一键、索引标记位置,统一在类上标记 ### 您只需两步即可集成 #### 1、Maven依赖 ``` io.gitee.zero-wsh acTable 3.0.7.1 ``` #### 2、配置 ``` #配置实体类的包名,多个用逗号隔开 zero.ac-acTable.entity-package=io.gitee.zerowsh.actable.demo.entity.mysql #支持的模式(默认NONE) zero.ac-acTable.model=ADD_OR_UPDATE_OR_DEL #建表之前执行的sql脚本 zero.ac-acTable.before-script=db/*.sql #建表之后执行的sql脚本 zero.ac-acTable.after-script=db/*.sql ``` #### 注解说明 1、类注解@AcTable,设置表相关信息 |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |name |表名称 | | | |comment |表注释 | | | |turn |当字段没有标记@AcColumn注解时,java转数据库的方式 |TurnEnums.DEFAULT |TurnEnums | 2、字段注解@AcColumn,设置列名相关信息 |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |exclude |排除该字段 |false |true/false | |value|列名称 | | | |order |字段排序 |0 |整数 | |comment |列注释 | | | |length |字段长度 |255 | | |decimalLength |小数位数 |0 | | |isNull |是否为空 |true |true/false | |isKey |是否主键 |false |true/false | |isAutoIncrement |是否自增 |false |true/false | |defaultValue |默认值 |default_value | | |type |字段类型 |ColumnTypeEnums.DEFAULT |ColumnTypeEnums | |oldName|数据库以前字段名 ||| |typeLimit|是否限制字段类型为支持的类型,如果不限制可自定义类型 |true|true/false| 3、索引@Index,设置表索引 |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |value |索引名后缀,前缀固定idx_ | | | |type|类型| IndexEnums.IDX | IndexEnums | |columnArr|索引字段和排序 | | | |message|冲突时提示信息,结和业务代码使用| | | 4、索引字段@IndexColumn |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |value |索引字段名,该值和实体类属性保持一致| | | |asc|排序,true正序 false倒序| false| true/false| 5、唯一键@Unique,设置表唯一键 |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |value |唯一键后缀,前缀固定uk_ | | | |columns |列名 | | | 6、@ExcludeSuperField,排除父级字段 |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |value |排除父类相关字段 | | | 7、@IgnoreTable,忽略表的注解 8、@UpdateColumnName,修改列名 |属性名 |描述 |默认值 |取值范围 | |---|---|---|---| |value |需要修改的列名,采用`->`进行分隔,左边是以前的字段,右边是改过后的字段 | | | #### 其他说明 1、支持的模式 |模式名 |描述 | |---|---| |NONE|啥也不做| |ADD_OR_UPDATE|只会新增、修改表结构,不会删除多余的字段| |ADD_OR_UPDATE_OR_DEL|表结构和实体类保持一致,可能会删除表中字段| |DEL_AND_ADD|先删除表(只删除实体类对应表),再新增,注意数据备份| |DEL_ALL_AND_ADD|先删除库中所有表,再新增,注意数据备份| 2、历史记录模式 |模式名 |描述 | |---|---| |NONE|不会创建历史表,需要保证可重复执行sql脚本| |REPEAT|会创建历史表,并且允许重复执行sql脚本| |NOT_REPEAT|会创建历史表,并且不允许重复执行sql脚本| #### 注意事项 - 有初始化脚本时,多个插入语句默认使用英文分号;隔开,可自行配置 - 有初始化脚本时,历史记录模式NONE、REPEAT都需要sql脚本可重复执行 - 有初始化脚本时,在字符串和注释中不要出现sql分割符字样 - 有初始化脚本时,并且使用了druid连接池filters不要配置wall - 2.*和3.*版本存在兼容问题,并且有些注解进行了调整:①唯一键、索引统一放置在类上;②@AcColumn注解取消name属性,改为value - 如果有默认值,需自己判断是否为字符串,如果是字符串需要自己加上单引号 - SQL Server如果修改的字段是唯一约束,需要先删除约束 - SQL Server设计上不允许直接修改 IDENTITY 属性,必须通过重建列实现