자바

resultType과 resultMap 차이

chantleman 2024. 9. 1. 15: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을 사용하여 프로퍼티명과 컬럼명을 매핑시켜줘야합니다.

'자바' 카테고리의 다른 글

웹모듈 배포  (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