2016-09-29 23 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)); 
} 
相关问题