Skip to content

定义列

以下注解,用于描述数据库列信息的,只能标注于字段上

@AutoColumn ^1.7.5

列定义注解,聚合注解,集合了下面@Column*开头的注解的能力

属性类型必填默认释义
valueString''列名
typeString''字段类型
lengthInteger-1字段长度
decimalLengthInteger-1字段长度小数位数
notNullBooleanfalse不为null
defaultValueString''列的默认值
defaultValueTypeDefaultValueEnum(UNDEFINED, EMPTY_STRING, NULL)UNDEFINED列的默认值类型,优先级高于value属性
commentString''列注释
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    @AutoColumn("name") 
    private String name;
    ......
}

@ColumnName

列名称

属性类型必填默认释义
valueString列名
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    @ColumnName("name") 
    private String name;
    ......
}

@ColumnType

列类型及长度

属性类型必填默认释义
valueString''字段的类型,不指定的情况下使用默认映射规则
lengthint-1字段长度,值小于 0 相当于 null
decimalLengthint-1小数点后小数位数,值小于 0 相当于 null
valuesString[]{}枚举可选值(目前仅支持 MySQL 的 enum 和 set 类型),如果字段是 java 的 Enum 类型,那么 values 可以不指定,默认取枚举的所有值
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 框架内部会自动赋值默认长度255
    @ColumnType(MysqlTypeConstant.VARCHAR) 
    private String name;
    ......
}

@ColumnNotNull

声明列必须非空

查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 标记此列不能为空
    @ColumnNotNull
    private String name;
    ......
}

@ColumnDefault

指定列的默认值

属性类型必填默认释义
valueString''列的默认值
typeDefaultValueEnum(UNDEFINED, EMPTY_STRING, NULL)UNDEFINED列的默认值类型,优先级高于value属性
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 默认值为null
    @ColumnDefault(type = DefaultValueEnum.NULL) 
    private String name;
    // 默认值为空字符串
    @ColumnDefault(type = DefaultValueEnum.EMPTY_STRING) 
    private String nickName;
    // 默认值为字符串12345678
    @ColumnDefault("12345678") 
    private String phone;
    ......
}

@ColumnComment

列注释

属性类型必填默认释义
valueString列注释
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 声明列注释
    @ColumnComment("姓名") 
    private String name;
    ......
}

@MysqlColumnCharset

MySQL 专属注解。指定列字符集和字符排序

属性类型必填默认释义
valueString字符集
collateString字符排序
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 声明列字符集和字符排序
    @MysqlColumnCharset(value = "utf8mb4", collate = "utf8mb4_0900_ai_ci") 
    private String name;
    ......
}

提示

以 Mysql 为前缀的注解说明是 Mysql 数据库专属的注解,对应的库注解只会作用于对应的数据库。

@MysqlColumnUnsigned ^1.9.1

MySQL 专属注解。指定MySQL数字类型不允许负数,其范围从 0 开始

查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 声明年龄是无符号数字
    @MysqlColumnUnsigned
    private Integer age;
    ......
}

提示

以 Mysql 为前缀的注解说明是 Mysql 数据库专属的注解,对应的库注解只会作用于对应的数据库。

警告

该注解等同于mysql的修饰符UNSIGNED,只能作用于数字类型上

@MysqlColumnZerofill ^1.9.1

MySQL 专属注解。指定MySQL数字类型在固定长度不足的情况下,进行前置补0

查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 声明编号是10位的,位数不足的前面自动补0,例如number是12345,查询结果是0000012345
    @MysqlColumnZerofill
    @ColumnType(length = 10) 
    private Integer number;
    ......
}

提示

以 Mysql 为前缀的注解说明是 Mysql 数据库专属的注解,对应的库注解只会作用于对应的数据库。

警告

该注解等同于mysql的修饰符ZEROFILL,只能作用于数字类型上,同时基于mysql的特性,改注解自动携带了@MysqlColumnUnsigned的能力

@Ignore

忽略标注的字段,不参与表结构维护,该注解的优先级大于所有注解

查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    // 直接忽略name字段,即便声明了@ColumnName
    @Ignore
    @ColumnName("name") // 不生效
    private String name;
    ......
}

@PrimaryKey

声明该列为主键

属性类型必填默认释义
valueboolean是否自增
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    @PrimaryKey(true) 
    private Long id;
    ......
}