实体类与数据库表结构同步

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依赖
<dependency>
	<groupId>io.gitee.zero-wsh</groupId>
	<artifactId>acTable</artifactId>
	<version>3.0.7</version>
</dependency>
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.DEFAULTTurnEnums

2、字段注解@AcColumn,设置列名相关信息

属性名描述默认值取值范围
exclude排除该字段falsetrue/false
value列名称
order字段排序0整数
comment列注释
length字段长度255
decimalLength小数位数0
isNull是否为空truetrue/false
isKey是否主键falsetrue/false
isAutoIncrement是否自增falsetrue/false
defaultValue默认值default_value
type字段类型ColumnTypeEnums.DEFAULTColumnTypeEnums
oldName数据库以前字段名
typeLimit是否限制字段类型为支持的类型,如果不限制可自定义类型truetrue/false

3、索引@Index,设置表索引

属性名描述默认值取值范围
value索引名后缀,前缀固定idx_
type类型IndexEnums.IDXIndexEnums
columnArr索引字段和排序
message冲突时提示信息,结和业务代码使用

4、索引字段@IndexColumn

属性名描述默认值取值范围
value索引字段名,该值和实体类属性保持一致
asc排序,true正序 false倒序falsetrue/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 属性,必须通过重建列实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值