2023. 6. 16. 18:30ㆍProgramming/기술 정리
이번 이슈는 특정 테이블에서 동적으로 조건을 걸어 다량의 데이터를 가져오는 상황에서 발생하였다.
문제 해결을 위해 열심히 검색해보았으나, 많은 경우는 매퍼 xml파일의 파라미터를 map으로 주고 있었다.
그러나 나는 기존에 공통으로 파라미터를 VO로 사용하고 있던 sql에 조건을 더해서 사용해야 했고
검색을 여러가지 조합한 결과 다음 같은 해결 방안을 찾아냈다.
[해결 방법]
- VO 자바 파일
@Data
public class testVO {
private ArrayList<String> dataArr;
}
- 메소드 자바 파일
public void testMethod(){
ArrayList<String> makeParamList = new ArrayList<String>();
makeParamList.add("m00001");
makeParamList.add("m00002");
makeParamList.add("m00003");
testVO tvo = new testVO();
tvo.setDataArr(makeParamList);
List<testVO> getMberList = memberDAO.selectMberInfoList(tvo);
}
- xml 매퍼 파일
1. Mybatis - foreach 사용
<select id="selectMberInfoList" parameterClass="패키지.클래스명(ex : testVO)" resultClass="패키지.클래스명">
SELECT * FROM MEMBER M
WHERE 1=1
<iterate prepend="AND M.MEMBER_ID IN" open="(" close")" conjunction="," property="dataArr">#dataArr{}# </iterate>
</select>
2.Ibatis - iterator 사용
<select id="selectMberInfoList" parameterTYpe="패키지.클래스명(ex : testVO)" resultType="패키지.클래스명">
SELECT * FROM MEMBER M
WHERE 1=1
<if test="dataArr !=null">
AND M.MEMBER_ID IN
<foreach item="item" index="index" collection="dataArr" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
+) LIST VO를 반복적으로 사용하기 위해서는 mybatis와 ibatis의문법이 아주 약간씩 다름을 명심하고 코드를 작성해야한다.
'Programming > 기술 정리' 카테고리의 다른 글
[DB] 테이블 주석 달기、 테이블 컬럼명 주석 달기 (0) | 2023.06.23 |
---|---|
[Javascript] data-value 속성 값 찾기 (0) | 2023.06.22 |
[Java] Null pointer exception 해결하기, 문자열 null 체크하기. 빈객체 체크하기 (0) | 2023.05.30 |
[JAVA] 게시판 작성하기3 Backend에서 받는 첨부파일 포함 VO 만들기 (0) | 2023.05.21 |
[javascript] 게시판 작성하기2 - 일반 value, 동적인 key를 가진 obj, 파일전송 함수 구현하기 (0) | 2023.05.15 |