- resultType과 resultMap 차이2024년 09월 01일
- chantleman
- 작성자
- 2024.09.01.:40
- resultType
: Mybatis에서 SQL 쿼리의 결과를 매핑할 때 사용할 클래스의 타입을 지정하는 속성.
이 속성에 지정된 클래스의 인스턴스로 결과를 매핑.
SQL 쿼리 결과를 특정 클래스 타입으로 매핑하는 속성으로 간단한 매핑에 사용.
결과의 컬럼 이름과 클래스의 필드 이름이 일치해야 함
예시 ↓
<select id="getUser" resultType="User"> SELECT id, name, email FROM users WHERE id = #{id} </select>
여기서 user 클래스는 id, name, email 필드를 가지고 있어야함
참고로 insert, update, delete 태그의 resultType은 생략가능합니다. (int로 반환하기때문)
- resultMap
: MyBatis에서 SQL 쿼리의 결과를 매핑할 때, 컬럼과 객체의 프로퍼티 간의 매핑을 정의하는 더 세밀한 방법.
복잡한 매핑에 사용되며, DB에서 설정한 컬럼명과 VO에서 설정한 프로퍼티 이름이 다를 경우 사용
예시 ↓
<resultMap id="userMap" type="User"> <result property="id" column="user_id"/> <result property="name" column="user_name"/> <result property="email" column="user_email"/> </resultMap> <select id="getUser" resultMap="userMap"> SELECT user_id, user_name, user_email FROM users WHERE user_id = #{id} </select>
여기서 user 클래스는 id, name, email 필드를 가지고 있으며, 데이터베이스의 컬럼명과 매핑이 다를 때 resultMap을 사용하여 정확히 매핑함
DB에서 설정한 컬럼명은 이와 같이 스네이크 표기법(단어와 단어사이 언더바 사용)으로 설정했지만
자바에서는 카멜 표기법(소문자로 작성후 이어지는 새 단어의 앞자리는 대문자 사용)으로 사용하기 때문에
자바 vo에서 get, set 설정할 때 프로퍼티명을 카멜표기법으로 바꿔주었습니다.
하지만 이렇게 되면 xml에서 쿼리 작성할 때 컬럼명과 일치하지 않는 문제가 발생하기 때문에
resultMap을 사용하여 프로퍼티명과 컬럼명을 매핑시켜줘야합니다.
728x90'자바' 카테고리의 다른 글
웹모듈 배포 (0) 2024.09.02 servlet (0) 2024.09.02 parameterMap 과 sessionStorage 차이 (0) 2024.09.01 JDBCUtil (0) 2024.08.26 yes24 데이터 DB 넣기 (0) 2024.08.19 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)