2016-11-23 86 views
1
public class Table{ 
private Long id = 1; 
private String name; 
List<Terms> terms; 
Map<String,Address> 
//getters and setters 
} 

什麼,我需要做的是,我需要的數據庫表,並在上面的類中的每個元素來鏈接我的班表是在數據庫表中的概念我有我的XML和DB中的相關數據庫表的java類的整體結構應該是最好的方式。 按我的理解,我能想的那樣的,現在是獲取類屬性的名稱,類型,如果集合然後集合的泛型類型

  1. 使用反射來獲取字段名稱和運用我的商業邏輯
  2. 我的XML的使用XPath和直接鏈接使用XPath

  3. 每個概念
  4. 每次從DB和XML中獲取值並使用一些中介邏輯鏈接它。

請建議,並提供一些僞代碼代碼,如果可能的

回答

1
You can try with below example: 

    Iterator<Table> iterator=tableList.iterator(); 
    boolean foundConcept=false; 
    while(iterator.hasNext()) 
    { 
     foundConcept=false; 
    Table table=iterator.next(); 
    String conceptName=table.getConceptDetails().getName(); 
    Field fieldArr[]=Table.getClass().getDeclaredFields(); 
    List<Field> fields=Arrays.asList(fieldArr); 
    Iterator<Field> iterator1 =fields.iterator(); 
    int i=0; 
    while(iterator1.hasNext()) 
    { 
    Field field=iterator1.next(); 
    field.setAccessible(true); 
    System.out.println(field.getName()+" @ "+field.getType()); 
    if(field.getName().equalsIgnoreCase(conceptName) &&  String.class.isAssignableFrom(field.getType())) 
    { 
    foundConceptMap.put(conceptName, (field.get(Table)).toString()); 
    foundConcept=true; 
    break; 
    } 
    else 
     { 
     Type type = field.getGenericType(); 
    if (type instanceof ParameterizedType) { 
    ParameterizedType pType = (ParameterizedType)type; 
    System.out.print("Raw type: " + pType.getRawType() + " - "); 
    System.out.println("Type args: " + pType.getActualTypeArguments()[0]); 
    if("java.util.List".equalsIgnoreCase(pType.getRawType().getTypeName())) 
    { 
     String classWithPackage=pType.getActualTypeArguments()[0].getTypeName(); 
     String className=""; 
     if(classWithPackage.contains(".")) 
     { 
      className=classWithPackage.substring(classWithPackage.lastIndexOf(".")+1); 
     } 
     else 
     { 
     className=classWithPackage; 
     } 
     System.out.println(className); 

     if("Terms".equalsIgnoreCase(className)) 
     { 
      List<Terms> list=Table.getTerms(); 
      setTerms(list, foundConceptMap, conceptName); 
     } 
    } 
    } 
    }