IT/development

[mybatis] list foreach delete

알 수 없는 사용자 2024. 1. 21. 12:13
반응형

목차

    화면에서 체크박스에 체크된 데이터 중 회원번호를 담아서 서버로 전달, 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')
    ;

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

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

    반응형