Package com.pugwoo.dbhelper.utils
Class DOInfoReader
java.lang.Object
com.pugwoo.dbhelper.utils.DOInfoReader
2015年1月12日 16:42:26 读取DO的注解信息:
1. 继承的类的信息读取,父类先读取,请保证@Column注解没有重复的字段。
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic FieldgetAutoIncrementField(Class<?> clazz) static FieldgetCasVersionColumn(Class<?> clazz) 获得一个DO类注解的casVersion字段getColumns(Class<?> clazz) 获得所有有@Column注解的列,包括继承的父类中的,顺序父类先getColumnsForSelect(Class<?> clazz, boolean selectOnlyKey) 获得所有有@Column注解的列,包括继承的父类中的,顺序父类先。 该方法只用于select读操作。static List<DOInfoReader.RelatedField> getFieldByDBField(Class<?> clazz, String dbFieldName, Field relatedColumnField) 从db字段名拿字段对象。
新增支持@JoinTable的支持,可以获得JoinTable类中的对象的Fieldstatic Class<?> getGenericFieldType(Field field) 获得泛型的classstatic FieldgetJoinLeftTable(Class<?> clazz) 获得注解了@JoinLeftTable的字段,如果没有注解,抛出NoJoinTableMemberExceptionstatic FieldgetJoinRightTable(Class<?> clazz) 获得注解了@JoinRightTable的字段,如果没有注解,抛出NoJoinTableMemberExceptionstatic JoinTablegetJoinTable(Class<?> clazz) 获得clazz上注解的JoinTable,如果没有则返回nullgetKeyColumns(Class<?> clazz) 获得字段里面的key字段getKeyColumnsNoThrowsException(Class<?> clazz) 获得字段里面的key字段getNotKeyColumns(Class<?> clazz) 获得字段里面的非key字段getRelatedColumns(Class<?> clazz) 获得所有有@RelatedColumn注解的列,包括继承的父类中的,顺序父类先static FieldgetSoftDeleteColumn(Class<?> clazz) 获得软删除标记字段,最多只能返回1个。static Table获取DO的@Table信息,如果子类没有,会往父类查找static Object优先通过getter获得值,如果没有getter,则直接获取static ObjectgetValueForRelatedColumn(List<DOInfoReader.RelatedField> fields, Object object) 为relatedColumn获得字段的值。这里有特别的逻辑。 当fields只有一个时,返回的是对象本身;否则是一个List,里面是按顺序的fields的多个值static booleanisVirtualTable(Class<?> clazz) 判断一个Table是否是虚拟表static void先按照setter的约定寻找setter方法(必须严格匹配参数类型或自动转换)
如果有则按setter方法,如果没有则直接写入
如果写入失败,会log error但不会抛出异常。
-
Constructor Details
-
DOInfoReader
public DOInfoReader()
-
-
Method Details
-
getTable
获取DO的@Table信息,如果子类没有,会往父类查找- Throws:
NoTableAnnotationException- 当clazz没有@Table注解时抛出NoTableAnnotationException
-
getJoinTable
获得clazz上注解的JoinTable,如果没有则返回null- Returns:
- 如果没有则返回null
-
isVirtualTable
判断一个Table是否是虚拟表 -
getFieldByDBField
public static List<DOInfoReader.RelatedField> getFieldByDBField(Class<?> clazz, String dbFieldName, Field relatedColumnField) 从db字段名拿字段对象。
新增支持@JoinTable的支持,可以获得JoinTable类中的对象的Field- Parameters:
clazz- DO类dbFieldName- 数据库字段名称,多个用逗号隔开;支持joinTable的字段,必须用别名表示,例如t1.id- Returns:
- 如果不存在返回空数组,返回的Field的顺序和dbFieldName保持一致;只要有一个dbFieldName找不到,则返回空数组
-
getGenericFieldType
获得泛型的class -
getColumns
获得所有有@Column注解的列,包括继承的父类中的,顺序父类先- Returns:
- 不会返回null
- Throws:
NoColumnAnnotationException- 当没有一个@Column注解时抛出
-
getColumnsForSelect
获得所有有@Column注解的列,包括继承的父类中的,顺序父类先。 该方法只用于select读操作。- Parameters:
selectOnlyKey- 是否只select主键- Returns:
- 不会返回null
- Throws:
NoColumnAnnotationException- 当没有一个@Column注解时抛出
-
getJoinLeftTable
获得注解了@JoinLeftTable的字段,如果没有注解,抛出NoJoinTableMemberException -
getJoinRightTable
获得注解了@JoinRightTable的字段,如果没有注解,抛出NoJoinTableMemberException -
getKeyColumns
获得字段里面的key字段- Throws:
NoKeyColumnAnnotationException- 如果没有key Column,抛出该异常。
-
getKeyColumnsNoThrowsException
获得字段里面的key字段 -
getCasVersionColumn
获得一个DO类注解的casVersion字段- Returns:
- 当没有column字段时返回null
- Throws:
CasVersionNotMatchException- 当有2个及2个以上的casVersion字段时抛出该异常
-
getAutoIncrementField
-
getSoftDeleteColumn
获得软删除标记字段,最多只能返回1个。- Returns:
- 如果没有则返回null
-
getNotKeyColumns
获得字段里面的非key字段 -
getRelatedColumns
获得所有有@RelatedColumn注解的列,包括继承的父类中的,顺序父类先- Returns:
- 不会返回null
-
getValue
优先通过getter获得值,如果没有getter,则直接获取 -
getValueForRelatedColumn
public static Object getValueForRelatedColumn(List<DOInfoReader.RelatedField> fields, Object object) 为relatedColumn获得字段的值。这里有特别的逻辑。 当fields只有一个时,返回的是对象本身;否则是一个List,里面是按顺序的fields的多个值- Returns:
- 当fields为空,返回null
-
setValue
先按照setter的约定寻找setter方法(必须严格匹配参数类型或自动转换)
如果有则按setter方法,如果没有则直接写入
如果写入失败,会log error但不会抛出异常。
-