MyBatis Insert 구문에서 resultType이 사용되지 않는 이유

KUKJIN LEE's profile picture

KUKJIN LEE5개월 전 작성

누군가에게는 당연한 이야기겠지만, Java를 처음 접한 누군가에게..

 

왜 MyBatis의 resultType은 Select 구문에서만 사용할까요?

MyBatis에서 resultType은 주로 select 구문에서 사용됩니다. 이는 select 구문이 데이터베이스로부터 결과 집합을 반환하기 때문에, 반환된 데이터를 객체로 매핑하는 데 필요합니다. 반면, insert, update, delete 구문은 데이터베이스의 상태를 변경하며, 별도의 결과 집합을 반환하지 않습니다. 따라서 이러한 구문에서는 resultType을 지정할 필요가 없습니다. 대신, MyBatis는 수행된 행(row)의 수를 반환합니다.

 

MyBatis에서의 올바른 Insert 구문 매퍼 정의 예제

<insert id="insertUser" parameterType="HashMap">
    INSERT INTO users (username, password, email)
    VALUES (#{username}, #{password}, #{email})
</insert>

 

insert 구문은 데이터베이스에 새로운 사용자 데이터를 삽입하며, 성공적으로 수정된 행(row)의 수를 반환합니다. 따라서 resultType은 필요하지 않습니다.

 

핵심 요약

  • resultType 사용: select 구문에서만 사용
  • 데이터 반환: select는 결과 집합 반환, insert/update/delete는 행(row)의 수 반환
  • 매퍼 예제: insert 구문에서 resultType 지정 불필요

MyBatis의 기본 개념을 이해하면 효율적인 매퍼 구성을 할 수 있습니다.

New Tech Posts