old/DB

[DB] mybatis selectkey 활용(Insert 값 불러오기)

뒷골목프로그래머 2020. 2. 25. 16:38
반응형

안녕하세요. 글쓰는 개발자입니다.

오늘은 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