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')
    ;

    ๊ฐœ์ธ ์Šคํ„ฐ๋”” ๊ธฐ๋ก์„ ๋ฉ”๋ชจํ•˜๋Š” ๊ณต๊ฐ„์ด๋ผ ํ‹€๋ฆฐ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ‹€๋ฆฐ ์  ์žˆ์„ ๊ฒฝ์šฐ ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    ๋Œ“๊ธ€