2016-11-23 12 views
1

私はこのクラステーブルをデータベーステーブルとリンクする必要があります。上記のクラスの各要素はデータベーステーブルの概念です私は、DB内のXMLデータベースと関連するデータベーステーブルごとに、Javaクラスの全体構造を持っています。私は今のところ考えることができるものを私の理解あたりとして はクラスプロパティ名、型、コレクションコレクションのジェネリック型を取得する

  1. 使用反射がフィールド名を取得し、私のビジネスロジック私のxmlの
  2. 使用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); 
     } 
    } 
    } 
    } 
関連する問題