0

我想加入两个表并读取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中的所有列?

4

1 回答 1

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));
}
于 2016-09-29T08:14:17.573 回答