【问题标题】:SQL postgres - How to rename each column after join because their are too many fieldsSQL postgres - 如何在加入后重命名每列,因为它们的字段太多
【发布时间】:2017-02-07 10:27:46
【问题描述】:

我想加入两个表并读取 java 中的所有列。在 java 中,结果集包含所有字段,但两个表的名称相同。 它们大约有 65 列,我不想在选择后指定每一列。

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中的字段。

我可以重命名表的每个字段而不在选择后指定每一列吗? (比如'选择 a.name 作为 a_name,b.name 作为 b_name,...')

或者他们有更好的解决方案来获取java中的所有列吗?

【问题讨论】:

  • 是的,你可以在 SQL 中完成,只需要在 sql 中编写简单的查询

标签: java sql postgresql sqlresultsetmapping


【解决方案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));
}

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2012-10-03
    • 2021-06-23
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多