私はJDBIを使用してDBにクエリしています。私は外部キーを介して接続されている2つのテーブルがあり、私のクエリは両方のテーブルの結合を返します。返された値をオブジェクトに変換するには、私のオブジェクトにResultSetMapper
を実装しました。クエリのResultSet
には、両方のテーブルの列が含まれています。t1.id, t1.name, t2.id, t2.name
。テーブル名に応じて分割するにはどうすればよいですか?私はこのコードを探しています:テーブルによってResultSetからカラムを削除します。
public class T1Object {
private long id;
private String name;
private T2Object t2Object;
}
public class T2Object {
private long id;
private String name;
}
public void map(ResultSet r) {
String t1Name = "Table1 name";
String t2Name = "Table2 name";
t1ResultSet = getResultSetByTableName(r, t1Name); // looking for this function's implementation
t2ResultSet = getResultSetByTableName(r, t2Name);
// convert each result set to an object using it's mapper...
}
問題がTable1
とTable2
は、同じ名前を持ついくつかの列を持っているということですので、私は、各列に異なる名前を返すようにクエリを変更すると考えられてきましたし、ちょうど全体ResultSet
を解析しますしかし、私は多くの列を持っているか、またはTable2
に変更を加えるだけでこれはうまくスケールされません(Table2
のマッパーを変更するだけでなく、ここに戻って変更を加えることを覚えておく必要があります)。
私はこれを見つけましたsolutionしかし、それはあまりにも複雑に見えます。
任意の考えは非常に高く評価されるだろう....私はオプションのコンストラクタの引数として列名の接頭辞を使用してマッパーを実装示唆