[MyBatis] separator UNION ALL

[MyBatis] separator UNION ALL

반응형

어느 한 프로젝트에서 사이트별로 인기검색어 목록이 떠야했는데..

기존에 구현했던 다른 프로젝트를 소스를 갖고왔으나

"서로 다른 타입에 담겨진 Parameter들을 DB에 저장하려면 어떻게 해야되지?" 라는 난관에 부딪혔다

방법은 다음과 같이 정리했다

list 에 담아서 추가한 후 mybatis 에서 foreach 문을 돌린다 . map 에 담아서 추가한 후 mybatis 에서 foreach 문을 돌린다 . 각각 String 으로 받아서 foreach 문을 돌린다 .

이 3가지 방법은 구분값이 , 였을때 했던 방법들이다. 역시나 결과는 오류..

방법이 없나 싶었을 때, Mapper에 @Param Annotation을 붙이고 String으로 받되,

구분값을 UNION ALL로 하는 방법을 찾았다.

원리는 가상 테이블 DUAL에 아래 쿼리처럼 UNION ALL로 이어서 INSERT를 하는것이다..

mngrMainServiceImpl.java

public String searchkeyProc(HashMap paramMap, ModelMap model, HttpServletRequest request, HttpServletResponse response, String returnPage){ String siteCode = CommUtil.getManagerSiteCode(request); String usrPopWord = (String[])map.get("usrPopWord"); mngrMainMapper.DeleteUserPopularWord(); mngrMainMapper.InsertUserPopularWord(siteCode, usrPopWord); return returnPage; }

Main_SQL.xml

/*InsertUserPopularWord*/ INSERT INTO t_user_popular_word ( site_code, user_popw_word, user_popw_date, user_popw_order ) SELECT #{siteCode}, #{usrPopWord}, SYSDATE, #{index}+1 FROM DUAL

반응형

from http://bbongsu.tistory.com/135 by ccl(A) rewrite - 2021-12-20 02:29:09