[MyBatis] selectKey Mulitple field 지정 방법

식빵·2023년 3월 29일
0

Mybatis

목록 보기
1/9
post-thumbnail
<insert id="registAuthRequst" parameterType="my.dto.ManageAuthorReqstDTO">
    <selectKey keyProperty="authorArea,skllAuthor" order="BEFORE" 
    			resultType="my.dto.ManageAuthorReqstDTO">
      SELECT
      <choose>
        <when test='@org.springframework.util.StringUtils@hasText(authorArea) and (code != "02")'>
            #{authorArea} as authorArea
        </when>
      <otherwise>
          NULL as authorArea
      </otherwise>
      </choose>
      ,
      <choose>
        <when test='@org.springframework.util.StringUtils@hasText(authorArea) and (code != "01")'>
            #{skllAuthor} as skllAuthor
        </when>
        <otherwise>
            NULL as skllAuthor
        </otherwise>
      </choose>
    </selectKey>
    INSERT INTO MANAGE_AUTHOR_REQST
    (USER_ID, CODE, AUTHOR_AREA, SKLL_AUTHOR, USE_PURPS)
    VALUES( #{userId}, #{code}, #{authorArea}, #{skllAuthor}, #{usePurps})
</insert>

주의할 점

  • keyProperty 에서 , 와 문자 사이에 공백 넣지 않기
  • <insert> 에서 지정한 parameterType 객체의 일부 필드값만 변경하고
    싶은 거면 위에 작성한 것처럼 resultTypeparameterType 과 똑같이 작성한다.
    그런게 아니라면 그냥 resultType="map"을 해도 된다.



참고로 parameterType, resultType 으로 사용하는 DTO Class 코드는 아래와 같습니다.

package my.dto; 

// import 문 제외

// Lombok 사용
@Getter
@Setter
@ToString
public class ManageAuthorReqstDTO {
    private Long reqstId; // PK
    private String userId;
    private String code;
    private String authorArea;
    private String skllAuthor;
    private String usePurps;
}
profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글