IT/development

[mybatis] list foreach delete

알 수 없는 사용자 2024. 1. 21.

화면에서 체크박스에 체크된 데이터 중 회원번호를 담아서 서버로 전달, delete query에서 IN절로 처리


view

function deleteData() {

    if (confirm("삭제 하시겠습니까?")) {

        //선택된 row 배열
        var selectedRows = [];
		//table의 td제일 앞에 checkbox란 id를 가진 엘리먼트에서 회원번호 가져옴
        $("input[id='checkbox']:checked").each(function () {
            var rowData = {
                'num': $(this).closest('tr').find('#num').text(), //회원번호
            }
            selectedRows.push(rowData);
        });
        
        $.ajax({
            url: '/info/delete.do',
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(selectedRows),
            contentType: 'application/json',
            success: function (response) {

                if (response.code === '1') {
                    console.log('Success:', response);
                    alert("삭제 성공 했습니다.");
                }
            },
            error: function (error) {
                console.error('Error:', error);
            }
        });
    }
}

controller

혹은 RestController로 만들어서 해도 된다.

@PostMapping("/info/delete.do")
public ResponseEntity delete(ModelMap model, @RequestBody List<UserVO> paramList) throws Exception {

    ModelAndView mav = new ModelAndView();

    mav.setViewName("jsonView");
    return userService.delete(paramList);
}

service

public ResponseEntity delete(List<userVO> paramList) throws Exception{
     //resultMap
    Map<String, Object> resultMap = new HashMap<>();

    try {
        userMapper.delete(paramList);
        resultMap.put("code", "1");
        return new ResponseEntity<>(resultMap, HttpStatus.OK);
    } catch (Exception e) {
        resultMap.put("code", "2");
        LogUtil.print("Exception", e.toString());
        return new ResponseEntity<>(resultMap, HttpStatus.BAD_REQUEST);
    }
}

mapper

void delete(List<UserVO> paramList);

xml

<delete id="delete" parameterType="java.util.List">
    DELETE FROM USER_INFO
          WHERE USER_NO IN
        <foreach collection="list" item="item" open="(" separator="," close=")">
            #{item.num}
        </foreach>
</delete>

결과예시

DELETE FROM USER_INFO
      WHERE USER_NO IN ('1', '2', '3')
;

개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

틀린 점 있을 경우 댓글 부탁드립니다.