반응형
안녕하세요. 글쓰는 개발자입니다.
오늘은 selectKey를 활용해서 mybatis에서 insert된 값을 바로 불러올 수 있는 기능을 소개하겠습니다.
아래 코드블럭들을 살펴보면, VO에 no와 name을 세팅하고 param객체에 담아서 Service단을 거쳐 Mapper로 전달합니다. 그리고 order="BEFORE", no를 select문을 통해 조회하고 selectKey 안의 keyProfperty = no에 바로 저장합니다. 그럼, 저장된 no를 바로 아래의 insert문에서 사용할 수 있습니다. 자세한 내용은 아래 전체 코드를 확인하세요.
1. Service단
sqlSession.insert("mapperName.selectKeyExample",param);
logger.info("순번: "+param.no());
2. Mapper(Mybatis)
<insert id="selectKeyExample" parameterType="java.util.Map">
<selectKey resultType="int" keyProperty="no" order="BEFORE">
SELECT ISNULL(MAX(NO), 0) + 1 as no
FROM TableName
WHERE name = #{name}
</selectKey>
INSERT INTO TableName
([NO]
)
VALUES
(#{no})
</insert>
3. VO(DTO) 형태
private int no;
private String name;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
반응형
'old > DB' 카테고리의 다른 글
[SQL]MS SQL STUFF/SQL Map/SQL List출력 (0) | 2020.01.10 |
---|