MS SQL 테이블 값 인서트하면 자동증가 컬럼 값을 가져오는 방법이 애매해서 찾아보던 중
<selectKey keyProperty> 라는 것을 알게 되어 정리~
<Controller>
1 2 3 4 5 6 7 | @RequestMapping(value="/test", method=RequestMethod.GET) public void testPush(@RequestParam HashMap<String, Object> paramMap, HttpServletRequest request, HttpServletResponse response) throws Exception { pushService.insertPush(paramMap); int pushIdx = (int) paramMap.get("idx"); } | cs |
HashMap 을 paramMap 이라는 이름의 파라미터로 TABLE_PUSH 에 인서트 하도록 한다
테이블 TABLE_PUSH 의 구조는
IDX(int), SUBJECT(String), MESSAGE(String) 컬럼 3개
<Mapper>
1 2 3 4 5 6 7 8 9 | <insert id="insertPush" parameterType="map"> INSERT INTO TABLE_PUSH (SUBJECT, MESSAGE) VALUES (#{subject}, #{message} ); <selectKey keyProperty="idx" resultType="Integer" order="AFTER"> SELECT IDENT_CURRENT('TABLE_PUSH') </selectKey> </insert> | cs |
<selectKey keyProperty="컬럼명" resultType="컬럼타입" order="실행시기">
SELECT IDENT_CURRENT('테이블명')
그렇게 하면 <insert> 의 parameterType="map" 으로 썼던 파라미터 paramMap 의 idx 에
현재 자동증가값이 얼마인지 들어가 있게 된다
또는 useGeneratedKeys 를 사용할 수도 있다
1 2 | <insert id="insertData" parameterType="DataClass" useGeneratedKeys="true" keyProperty="id"> | cs |
'7.데이터프레임워크 > myBatis' 카테고리의 다른 글
SQL 조건절 IN 안에 조건 여러개 넣기 (0) | 2016.11.11 |
---|