Mybatis를 너무 오랜만에 써봐서 멍청 이슈가 있었다...
mapper.xml에서 useGeneratedKeys="true", keyProperty="" 를 추가해준다.
keyProperty는 가져올 ID의 프로퍼티를 적어주면 된다.
<insert id="createCard" parameterType="SaveCardDTO" useGeneratedKeys="true" keyProperty="cardId">
INSERT INTO card(user_id, store_id, food_type_id)
VALUES (#{userId}, #{storeId}, #{foodTypeId})
</insert>
DTO에는 키프로퍼티가 반드시 포함되어있어야한다.
@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class SaveCardDTO {
private Integer cardId; // keyproperty
private Integer userId;
private String storeId;
private Integer foodTypeId;
}
값을 insert 후에, 생성된 객체에서 get프로퍼티() 를 통해서 값을 가져올 수 있다.
cardService.createCard(newCard);
System.out.println("cardId : " + newCard.getCardId());
insert 이후의 int 값은 useGeneratedKeys 옵션에 따라서가 아닌, 결과 여부이다.(0 혹은 1)
Integer cardId = cardService.createCard(newCard);
System.out.println("cardId : " + cardId);
이렇게 하고 실행하니 계속 똑같은 결과만 storeId가 1로만 나왔다 (당연함)