2017-01-25 74 views
0

我希望標題以及設置添加對象JSON ...JAVA - 從連接SQL查詢

我有一個現有的Java應用程序(我不能改變所有的應用程序),它只是暴露了數據庫表的使用JSON gson庫。

我的問題是如何創建一個Json不僅與DB的簡單字段,但與鏈接的對象。

我有一個表這樣

| objectid | plantid | other_fields | 

現在已有GSON給我簡單的plantid爲整數,但我有一個plants

| plantid | plantname | other_fields | 

我想有gson與工廠對象,而不僅僅是plantid

這就是應用程序如何映射t他的SQL查詢示範

public ArrayList<ObjectsEntity> getObject(String objectId){ 
     ArrayList<ObjectsEntity> list = new ArrayList<>(); 
     ResultSet rs = null; 
     try { 
      Connection connLocal = connFactLocal.getConnection(); 
      String query = "select * from OBJECTS o left join PLANTS p on o.PLANTID = p.PLANTID " 
        + "left join OBJECTTYPES ot on o.OBJECTTYPEID = ot.OBJECTTYPEID"; 
      Statement stmt = connLocal.createStatement(); 
      rs = stmt.executeQuery(query); 
      while (rs.next()) { 
       ObjectsEntity oe = new ObjectsEntity(); 
       oe.setOBJECTID(rs.getInt("OBJECTID")); 
       oe.setPLANTID(rs.getInt("PLANTID")); 
       oe.setOBJECTNAME(rs.getString("OBJECTNAME")); 
       oe.setOBJECTTYPEID(rs.getInt("OBJECTTYPEID")); 
       oe.setDESCRIPTION(rs.getString("DESCRIPTION")); 
       oe.setISMONITORED(rs.getBoolean("ISMONITORED")); 
       oe.setGROUP(rs.getString("GROUP")); 
       list.add(oe); 
      } 
     } catch (SQLException e){ 
      logger.error("SQL Error:",e); 
     } 
     return list; 
    } 

ObjectsEntity.java是一個簡單的映射與數據庫表我試圖改變這種映射更新

int PLANTID 

Plants plant 
getter和setter

但後來我不知道如何設置查詢的結果集植物...任何想法?

+1

既然你已經有一個對象來存儲你的數據,你只需要改變'oe.setPLANTID(rs.getInt(「PLANTID」));''對植物的植物= new Plants(); plants.setId(rs.getInt( 「PLANTID」)); plants.setOtherFields(....)....; oe.setPlants(植物);' –

回答

-1

您需要使用resultset中的數據填充Plants對象,並在ObjectsEntity上設置該對象。使用ObjectMapper可以ObjectsEntity轉換成JSON字符串

while (rs.next()) { 
        ObjectsEntity oe = new ObjectsEntity(); 
        oe.setOBJECTID(rs.getInt("OBJECTID")); 
        Plants plants = new Plants(); 
        plants.setId(rs.getInt("PLANTID")); 
         //Set other fields. 
        oe.setPLANTS(plants); 
        oe.setOBJECTNAME(rs.getString("OBJECTNAME")); 
        oe.setOBJECTTYPEID(rs.getInt("OBJECTTYPEID")); 
        oe.setDESCRIPTION(rs.getString("DESCRIPTION")); 
        oe.setISMONITORED(rs.getBoolean("ISMONITORED")); 
        oe.setGROUP(rs.getString("GROUP")); 
        list.add(oe); 
       } 
+0

哪個ObjectMapper?傑克遜?你是否期待OP瞭解你的意思? – rkosegi

+0

Jackson ObjectMapper。這將幫助您將Java對象轉換爲JSON字符串。您需要在ObjectsEntity Bean上使用@JsonProperty註釋 – MayurB

+0

我非常瞭解Jackon,但是我的評論(並且您沒有必要註釋)沒有意義。 – rkosegi