언어 및 도구들 공부/Spring

Select sql 구문 수행시 Resultmap의 모든 컬럼을 사용하지 않으면?

Dr.Mlem 2024. 11. 13. 16:22

(08-13 mapper에서 select 구문 메소드를 추가하면서)

Q1.

mapper에서 resultmap 어노테이션을 추가하면 해당되는 resultmap의 모든 컬럼을 select절로 치지 않아도, 그 중에 해당되는 컬럼명과 변수를 대응해서 이어주는거야?

 

GitHub Copilot

네, @ResultMap 어노테이션을 사용하면 해당 매핑된 결과 맵을 사용하여 결과를 매핑할 수 있습니다. 이 경우, SELECT 절에서 모든 컬럼을 명시적으로 나열하지 않아도 됩니다. @ResultMap에 정의된 매핑 정보에 따라 결과가 자동으로 매핑됩니다.

예를 들어, @ResultMap("membersMap")가 members 테이블의 컬럼과 Member 클래스의 필드를 매핑하는 정보를 가지고 있다면, SELECT user_id from members와 같은 쿼리에서도 membersMap에 정의된 매핑 정보에 따라 Member 객체로 결과가 매핑됩니다.

 

 

 

Q2.

예를들어서, resultmap에, id pw email의 3개 컬럼에 대해서 정의를 해두었는데, 내가 그 다음에 어떤 메소드에서 id만 셀렉트를 하려고 해도, resultmap 을 불러와도 되는거야?

 

GitHub Copilot

네, @ResultMap을 사용하면 해당 매핑 정보에 따라 결과가 매핑됩니다. 예를 들어, ResultMap id, pw, email 컬럼이 정의되어 있지만, 특정 메소드에서 id만 선택하려고 할 때도 @ResultMap을 사용할 수 있습니다. 이 경우, ResultMap에 정의된 매핑 정보 중 id 컬럼만 사용됩니다.

예를 들어, 다음과 같이 ResultMap이 정의되어 있다고 가정해봅시다:

그리고 findId 메소드에서 id만 선택하는 경우:

이 경우, ResultMap에 정의된 매핑 정보 중 user_id 컬럼만 사용되어 Member 객체의 id 필드에 매핑됩니다. 나머지 필드는 null로 남게 됩니다.

 

 

+ 강사님도 말씀하시길, 정의하고 안쓰는건 문제가 안된다고 함.

없는걸 쓰려고 하면 에러가 나고...