2016-11-23 53 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); 
     } 
    } 
    } 
    }