게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[Mybatis] foreach 가 안먹힙니다...
게시물ID : programmer_3418짧은주소 복사하기
작성자 : 아도루
추천 : 0
조회수 : 6884회
댓글수 : 6개
등록시간 : 2014/05/21 19:11:52
옵션
  • 베스트금지
  • 본인삭제금지
예제로 이렇게 했습니다.

테이블은 제품(TB_GD) 라는 테이블 입니다.

CREATE TABLE `TB_GD` (
  `GD_CD` int(11) NOT NULL AUTO_INCREMENT, // 제품_코드 (PK)
  `GD_NM` varchar(20) DEFAULT NULL, // 제품_이름
  `REG_MEMB_ID` varchar(20) DEFAULT NULL, // 등록한 사람의 ID
  `REG_DT` varchar(14) DEFAULT NULL, // 등록한 날짜
  `UPDT_MEMB_ID` varchar(20) DEFAULT NULL, // 수정한 사람의 ID
  `UPDT_DT` varchar(14) DEFAULT NULL, //  수정한 날짜
  `DEL_YN` varchar(1) DEFAULT 'N', //  삭제_여부 (N : 삭제 안된 상태, Y: 삭제 된 상태)
  PRIMARY KEY (`GD_CD`)
)

테이블에 DEL_YN 을 추가 한것은 FK 때문입니다.

mybatis 를 이용하여, 동적 쿼리문을 하고 싶습니다.

여러개의 pk 가 왔을 때, pk에 해당하는 row의 DEL_YN을 Y로 수정하고 싶습니다.

저는 이렇게 파라미터를 만들었습니다.

HashMap<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("SESSION_LOGIN_ID", loginId);
paramMap.put("pkList", list);

마지막 줄에 보이는 list는 ArrayList 이며, 안에는 위 테이블의 PK 값이 들어 있습니다.
paramMap을 sqlSession.update() 메서드의 인자로 넣어서 처리합니다.

그리고 보시면 아시겠지만, Value Object, 즉 VO를 안씁니다.

그렇다고 했을때, 동적 쿼리문을 어떻게 작성해야 하는지 모르겠습니다.

<update id="doDelelteChecked" parameterType="HashMap">
/* id : product.doDelelteChecked*/
UPDATE
 TB_GD
SET
 TB_GD.DEL_YN = 'Y'  /* 삭제 처리*/
, TB_GD.UPDT_MEMB_ID = #{SESSION_LOGIN_ID}
, TB_GD.UPDT_DT = DATE_FORMAT(NOW(), "%Y%m%d%H%i%S")
WHERE
 TB_GD.GD_CD IN
 <foreach collection="pkList" index="index" item="item" open="(" separator="," close=")">
  여기에 무엇을 넣어야 되나요? 별에 별짓 다해봤는데, 안됩니다.
 </foreach>
 
;  
</update>


한 줄 요약 : mybatis 에서, VO 를 안쓰고 foreach 를 쓸 수 있는 방법이 정 없는 것인지 궁금합니다. 그렇다고 한다면, 왜 그런지..
속시원하게 해결해 주실분 구합니다. 정말 다 찾아보다가 두손두발 들었습니다. 잘 부탁드립니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호