xUtils系列之DbUtils-Id,NoAutoIncrement注解

来源:互联网 发布:ddos 阿里云 编辑:程序博客网 时间:2024/06/05 09:46
Id注解定义:
@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Id {    String column() default "";}

NoAutoIncrement注解定义:
@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface NoAutoIncrement {}

DbUtils解析代码:
Field primaryKeyField = null;Field[] fields = entityType.getDeclaredFields();if (fields != null) {    for (Field field : fields) {        if (field.getAnnotation(Id.class) != null) {            primaryKeyField = field;            break;        }    }    if (primaryKeyField == null) {        for (Field field : fields) {            if ("id".equals(field.getName()) || "_id".equals(field.getName())) {                primaryKeyField = field;                break;            }        }    }}


注意事项:
1.当类中有id或_id时,可以省略Id的注解

2.当id,_id或@Id注解Field为integer型时,primary key默认为autoincrement
此时,可以用@NoAutoIncrement注解该字段,使其不自增

3.@NoAutoIncrement注解仅用于primary key.

4.一个类中,只可以使用一个@Id注解,当使用多个@Id注解时,primary key未知

5.一个类中,如果同时存在id,_id,@Id时,primary key优先级为 @Id > id > _id

6.@Id如果使用Column参数,则primary key列名为Column值

7.@Id如果不指明参数,则primary key列名为字段名

用法:
@Id@NoAutoIncrementprivate int id;//   private int id;//@Id(column="ID")//private int id;//@Id(column="name")//private String name;

0 0