Id注解定义:
NoAutoIncrement注解定义:
DbUtils解析代码:
注意事项:
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列名为字段名
用法:
@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
@NoAutoIncrement
private int id;
// private int id;
// @Id(column="ID")
// private int id;
// @Id(column="name")
// private String name;