순서
- Map<String, Object> 선언
- Object에 List 담기
- Query에서 List를 foreach를 돌려 사용
예제1
//DAO
//DAO에서 Member 정보 가져오기
public List<Member> getMemberInfoDAO() {
Map<String, Object> param = new HashMap<>();
param.put("id", "1"); //#{id}
param.put("email", "test@test.com"); //#{email}
List<String> activeList = new ArrayList<>();
activeList.add("A"); //쿼리의 in 조건에 넣을 값
activeList.add("B");
param.put("paramList", activeList); //Map에 List 담기
return sqlSession.selectList("selectMemberInfo", param);
}
-- MyBatis - SQL.xml
-- SQL.xml의 조건절 in 안에서 foreach로 List 돌림
<select id="selectMemberInfo" parameterType="java.util.HashMap" resultType="xx.xx.xx.Member">
SELECT *
FROM MEMBER
WHERE 1=1
AND ID = #{id}
AND EMAIL = #{email}
<if test="list.size != 0">
AND MEMBER_TYPE IN
<foreach collection="list" item="item" index="index" separator=",", open="(", close=")">
#{item}
</foreach>
</if>
</select>
-- Executed Query
-- 실행되는 쿼리
SELECT *
FROM MEMBER
WHERE 1=1
AND ID = #{id}
AND EMAIL = #{email}
AND MEMBER_TYPE IN ('A', 'B');
예제2
//DAO
public List<Map<String, Object>> selectMemberInfo(List<String> paramList) {
return selectList("member_selectMemberInfo", paramList);
}
-- MyBatis - SQL.xml
<select id="selectMemberInfo" parameterType="java.util.ArrayList" resultType="resultMap">
SELECT *
FROM MEMBER
WHERE 1=1
AND ID = #{id}
AND EMAIL = #{email}
<if test="list.size != 0">
AND MEMBER_TYPE IN
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</select>
'Backend > Java' 카테고리의 다른 글
[Java] instanceof : 객체 타입 비교 (0) | 2022.02.21 |
---|---|
[Java] .getClass().getName(): 변수 타입 확인 (0) | 2022.02.18 |
[Java] 문자열 비교 : ==와 equals()의 차이 (0) | 2022.01.11 |
[Servlet/JSP] <a> 태그에서 Post 방식으로 값 넘기기 (0) | 2022.01.04 |
[SVN] 커밋 시 불필요한 소스 제외하기 (0) | 2021.12.20 |
댓글