RowMapper
2026년 5월 17일
-
queryForObject()의 반환형은 데이터형만 가능하다.
-
그러나 RowMapper를 사용하면, 원하는 형태의 결과값을 반환할 수 있다.
-
즉, 데이터 베이스의 반환 결과인 ResultSet을 객체(Object) 형태로 변환해준다.
-
RowMapper를 사용하면 SELECT로 나온 여러개의 값을 반환할 수 있을 뿐만 아니라, 사용자가 원하는 형태로도 얼마든지 받을 수 있다.
예시
- 순수 JDBC(Java DataBase Connectivity)를 배울땐 이런 고민을 할 필요 없이 결과값을 ResultSet으로 반환 받았다.
Java
-
우의 코드는 사실 아래와 같은 3 단계를 거친다.
- ResultSet으로 먼저 값을 받는다.
- 그다음 User 객체(Object)에 담는다.
- 반환한다.
-
그렇기 때문에 아무 고민없이 결과값을 받을 수 있었다.
-
밑의 코드를 보면 JDBC Template에서
SELECT * FROM USER구문을 queryForObject() 사용하면 User 객체(Object) 자체를 반환받을 수 없다.
Java
- 따라서 이 때 필요한 것이 바로 RowMapper 인터페이스(Interface)이다.
mapRow
- RowMapper의 mapRow 메서드(Method)는 이러한 ResultSet을 사용한다.
Java
-
첫번째 매개변수는 ResultSet에 값을 담아와서 ??? 자리의 특정 객체(Object)에 저장한다.
-
두번째 매개변수는 그 특정 객체를 count만큼 반복한다는 뜻이다.
-
이것을 실제로 작성해보면 다음과 같다.
Java
-
count는 알아서 세어주므로, 작성할 필요없다.
-
위의 코드를 좀더 깔끔하게 람다(lambda)식으로 작성하면 다음과 같다.
Java
향상된 queryForObject()
- 따라서 아래코드처럼 User 클래스(Class)의 인스턴스(Instance)(객체(Object))로반환 받을 수 있다.
Java