DB를 쿼리하는 데 JDBI를 사용하고 있습니다. 외래 키를 통해 연결된 두 테이블이 있고 내 쿼리가 두 테이블의 조인을 반환합니다. 반환 된 값을 객체로 변환하려면 내 객체에 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이지만 지나치게 복잡해 보입니다.
어떤 생각이 매우 극명하게 될 것이다 .... 내가 선택 생성자 인수로 열 이름 접두사와 매퍼를 구현하는 것이 좋습니다