2016-09-29 27 views
0

我想連接兩個表並讀取java中的所有列。在java中,結果集包含所有字段,但它們對於兩個表都有相同的名稱。 他們是大約65列,我不想在選擇後指定每列。SQL postgres - 如何在連接後重命名每個列,因爲它們的字段太多

SQL查詢:

select * from Tab a join Tab b on a.id = b.id; 

在java中我想:

private MyObject map(ResultSet rs) throws SQLException { 
    myObj.setNameA(rs.getString("a_name")); 
    myObj.setNameB(rs.getString("b_name")); 
} 

我的想法是重命名,如 'a_name' 和 'b_name',然後在表中的變量每列閱讀java中的字段。

我可以重命名錶中的每個字段,而不必在選擇後指定每個列嗎? (比如'select a.name as a_name,b.name as b_name,...')

或者他們有更好的解決方案來獲得java中的所有列嗎?

+0

是的,你可以在SQL中做到只有你需要在SQL中編寫簡單的查詢 – Iqbal

回答

1

您可以使用列號而不是列名。 Javadoc中明確規定(http://docs.oracle.com/javase/8/docs/api/java/sql/ResultSet.html

當一個getter方法被調用,列名, 同名幾列,第一個匹配列的值將被 返回。列名選項設計用於在生成結果集的SQL查詢中使用名稱列 。 對於 未在查詢中明確指定的列,最好使用 列號。如果使用列名稱,編程人員應小心謹慎,以確保它們唯一引用可通過SQL AS子句保證的預期列 。

使用列號當然需要知道列的確切位置(基於1)。

private MyObject map(ResultSet rs) throws SQLException { 
    myObj.setNameA(rs.getString(1)); 
    myObj.setNameB(rs.getString(66)); 
} 
相關問題