package com.hg.ecommerce.model.support; import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; import com.hg.ecommerce.model.support.annotation.Column; import com.hg.ecommerce.model.support.annotation.Id; import com.hg.ecommerce.model.support.annotation.Table; public class AnnotatedModel { private Class<? extends EntityObject> cls; public AnnotatedModel(Class<? extends EntityObject> cls){ this.cls = cls; } /** * 获取 实体 所映射的表名 * @return */ public String getTableName() { if(cls.isAnnotationPresent(Table.class)){ return cls.getAnnotation(Table.class).value(); } return ""; } /** * 获取对应 字段 所映射的列名 * @param fieldName * @return */ public String getColumnName(String fieldName) { try { Field field = cls.getDeclaredField(fieldName); if(field.isAnnotationPresent(Column.class)){ return field.getAnnotation(Column.class).value(); } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } return ""; } public Set<String> getPrimaryKeys() { Set<String> ids = new HashSet<String>(); Field[] fields = cls.getDeclaredFields(); for(Field field : fields){ if(field.isAnnotationPresent(Id.class)){ ids.add(getColumnName(field.getName())); } } return ids; } }