Skip to content

定义索引

以下注解,用于描述索引信息的,即可以标注于实体上描述组合索引,也可以标注于字段上描述独立索引

@Index

在字段上声明该字段为索引字段

属性类型必填默认释义
nameString当前字段的列名称索引的名字, 框架会自动在名字前追加配置的前缀
typeIndexTypeEnum(NORMAL, UNIQUE)NORMAL索引类型(普通索引,唯一索引)
commentString''索引注释
查看样例
java
// 测试表
@AutoTable
public class TestTable {
    private Long id;
    @Index
    private String name;
    @Index(type = IndexTypeEnum.UNIQUE) 
    private String phone;
    ......
}

@TableIndex

可用于实体上,声明多字段联合的索引使用的,fields与indexFields必须配置一个,不然不生效

属性类型必填默认释义
nameString''索引的名字, 框架会自动在名字前追加配置的前缀
typeIndexTypeEnum(NORMAL, UNIQUE)NORMAL索引类型(普通索引,唯一索引)
fieldsString[]{}字段名,支持多字段。注意,多字段的情况下,字段书序即构建索引时候的顺序,牵扯索引左匹配问题。该配置优先级低于indexFields ,具体可参考indexFields的说明
indexFieldsIndexField(field: String, sort: IndexSortTypeEnum(ASC, DESC))[]{}字段名,兼容需要指定字段排序方式的模式。注意,多字段的情况下,字段书序即构建索引时候的顺序,牵扯索引左匹配问题。该配置优先级高于fields ,也就是说,生成索引字段的顺序,该配置中的列会排在fields之前,同时,如果该配置与fields之间存在重名的情况,以该配置为主
commentString''索引注释
查看样例
java
// 测试表
@AutoTable
@TableIndex(name = "name_phone",  
            type=IndexTypeEnum.UNIQUE,  
            fields={"name", "phone"},  
            comment="姓名电话联合索引") 
public class TestTable {
    private Long id;
    private String name;
    private String phone;
    ......
}
java
// 测试表
@AutoTable
@TableIndex(name = "name_phone", 
            indexFields={ 
              @IndexField(field="name", sort=IndexSortTypeEnum.ASC), 
              @IndexField(field="phone", sort=IndexSortTypeEnum.DESC) 
            }, 
            comment="姓名电话联合索引,姓名正序,电话倒序") 
public class TestTable {
    private Long id;
    private String name;
    private String phone;
    ......
}

@TableIndexes

多字段联合索引的集合

属性类型必填默认释义
valueTableIndex[]索引集合
查看样例
java
// 测试表
@AutoTable
@TableIndexes({ 
        @TableIndex(name = "name_phone", fields={"name", "phone"}, comment="姓名电话联合索引"), 
        @TableIndex(name = "cardNumber", type=IndexTypeEnum.UNIQUE, fields={"cardNumber"}, comment="身份证号唯一索引") 
}) 
public class TestTable {
    private Long id;
    private String name;
    private String phone;
    private String cardNumber;
    ......
}