Database

[MyBatis] foreach

k9e4h 2018. 5. 25. 13:15

http://huskdoll.tistory.com/507


방법은 Map을 선언시 <String, Object> 로 선언하고 Object에 list를 넣어주고 query 부분에서 리스트를 foreach 돌려 사용하면 됩니다.


DAO 부분에서 책 정보를 가져오도록 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public List<Books> getBooksInfo() {
             
    Map<String, Object> param = new HashMap<String, Object>();
 
    param.put("id", "1"); //#{id}에 셋팅
    param.put("name", "victor"); //#{name}에 셋팅
     
    List<String> codeList = new ArrayList<String>();
 
    codeList.add("01"); //in 조건에 넣을 정보
    codeList.add("05");
     
    param.put("code_list", codeList); //map에 list를 넣는다.
     
    return sqlSession.selectList("selectBooksInfo", param);
     
}


query xml 부분에서 foreach 로 in절에 리스트를 돌림

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<select id="selectBooksInfo" resultType="kr.co.husk.Books" parameterType="java.util.HashMap">
    select
        price,
        discount_price
    from
        books
    where
        id = #{id}
        and name = #{name}
        <choose>
            <when test="code_list.size != 0">
                and book_code in
                <foreach collection="code_list" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </when>
        </choose>
</select>


반응형

'Database' 카테고리의 다른 글

Data Mart  (0) 2019.11.26
[MySql] 암호화된 데이터 like 검색하기  (0) 2018.11.12
[MySql] DISTINCT , GROUP BY  (1) 2018.05.10
[MySql] INDEX  (0) 2018.05.08
[MySQL] Transaction과 Loack  (0) 2018.03.22