0

2 つのテーブルを結合し、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 でフィールドを読み取ることでした。

選択後に各列を指定せずにテーブルの各フィールドの名前を変更できますか? ('select a.name as a_name, b.name as 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 に答える