<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>
주의할 점
,
와 문자 사이에 공백 넣지 않기<insert>
에서 지정한 parameterType
객체의 일부 필드값만 변경하고resultType
을 parameterType
과 똑같이 작성한다.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;
}