Oracle와 mybatis 연동 실습 (글수정, 글삭제 구현)

Back-End/Spring 2019. 6. 10. 11:32
728x90
반응형

MemoService.java : dao에 값만 전달해 주는 역할



-글 수정 구현-



글 상세보기 (View.java) 페이지 에서 시작


=> 수정 버튼 클릭 (글 수정을 위해 dto.idx (글번호) 를 매개변수로 넘기고, 마찬가지로 id값인 btnUpdate도 넘긴다.) 


=> view 파일 상부에 있는 javascript 구문 실행 (id을 $("")으로 받고, dto.idx (dto에 있는 글번호 값)도 $("")로 받는다.)

그리고, 함수(function)을 실행한다.


=> 받은 dto.idx(글번호 값을) controller에 넘긴다 (왜냐하면 그 쪽에 @RequestMapping으로 url이 맵핑되어 있기 때문에)


=> controller 안에 있는 메소드인 update메소드에 @PathVariable int idx (글번호)와 수정을 해야하기 때문에 

MemoDTO dto (이름값과 메모값이 담겨있음) 를 매개변수로 받는다.


=> update 메소드 안에 있는 memoService.update메소드 (memoServiceImpl.java 에서 구현되어 있음)를 실행한다. 

(이 update메소드는 DAO에서 @Update 어노테이션을 사용해서 쿼리문이 대입된 상태이다.


=> update 메소드에 있는 쿼리가 정상적으로 실행이 되면 글수정을 해서 최신화를 하고 list.do 페이지로 돌아가게 된다.




-글 삭제 구현-



글 삭제 (View.java) 페이지 에서 시작 


=> 삭제 버튼 클릭 (글 삭제를 위해 dto.idx (글번호) 를 매개변수로 넘기고, 마찬가지로 id값인 btnDelete도 넘긴다.) 


=> view 파일 상부에 있는 javascript 구문 실행 (id을 $("")으로 받고, dto.idx(dto에 있는 글번호 값)도 $("")로 받는다.)

     그리고, 함수(function)을 실행한다.


=>  받은 dto.idx(글번호 값을) controller에 넘긴다. 

(왜냐하면 그 쪽에 @RequestMapping으로 맵핑되어 있기 때문에)


=> controller 안에 있는 메소드인 delete메소드에 @PathVariable int idx (글번호)를 넘긴다.


=> delete 메소드 안에 있는 memoService.delete (memoServiceImpl.java에서 구현되어 있음) 메소드를 실행한다. 

(이 delete 메소드는 DAO에서 @Delete 어노테이션을 사용해서 쿼리문이 대입된 상태이다.


=> delete 메소드에 있는 쿼리가 정상적으로 실행이 되면 최신화를 하고 list.do 페이지로 돌아가게 된다.





view.jsp중 일부


1
2
3
4
5
6
7
8
9
    <tr align = "center">
        <td colspan = "2">
            <input type = "hidden" name = "idx" value = "${dto.idx }">
            <!--글 수정을 하기 위해 글번호를 hidden 타입의 매개변수로 넘긴다. -->
            <button type = "button" id = "btnUpdate">수정</button>
            <button type = "button" id = "btnDelete">삭제</button>
            <!-- button type을빼면 무조건 재출력버튼이 되기 때문에 타입을 button으로 한다. -->
        </td>
    </tr>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
$(function() {//밑에서 작성한 id값이 넘어오면 click메소드 안에 들어있는 function()함수를 실행해서
            //수정하거나 삭제할때 각각 번호를 넘겨서 삭제한다.
            
    $("#btnUpdate").click(function(){//수정버튼을 누르면 밑에서 사용한 id값이 넘어오고 function()메소드를 실행해서
                                        //dto의 글번호 값을 넘겨준다.
        document.form1.action="${path}/memo/update/${dto.idx}";
        document.form1.submit();
    });
    $("#btnDelete").click(function(){ //삭제 버튼을 누르면 confirm메소드를 실행해서 확인창을 띄우고, dto의 글번호값을 넘겨준다.
        if(confirm("삭제하시겠습니까?")){
            location.href="${path}/memo/delete/${dto.idx}";    
        }
    });
});
</script>
cs




MemoController.java 중 일부


1
2
3
4
5
6
7
8
9
10
11
12
@RequestMapping("update/{idx}")
    public String update(@PathVariable int idx, MemoDTO dto) {
        memoService.update(dto);
        return "redirect:/memo/list.do";
    }
    
    @RequestMapping("delete/{idx}")
    public String delete(@PathVariable int idx) {
        memoService.delete(idx);
        return "redirect:/memo/list.do";
        
    }

cs



MemoDAO.java 중 일부


1
2
3
4
5
6
7
8
9
    @Update("update memo set writer=#{writer}, memo=#{memo} "
            + "where idx=#{idx}")
    public void memo_update (MemoDTO dto);
    //글번호를 매개변수로 받고 @Param을 사용하면 괄호 안에 값이 쿼리문의 #안쪽에 대입이된다.
    
    
    @Delete("delete memo where idx=#{idx}")
    public void memo_delete(@Param("idx") int idx);
    //글번호를 매개변수로 받고 @Param을 사용하면 괄호 안에 값이 쿼리문의 #안쪽에 대입이된다.
cs




MemoService.java (인터페이스) 중 일부


1
2
public void update(MemoDTO dto);//수정
public void delete(int idx);//삭제
cs




MemoServiceImpl.java (인터페이스 구현 클래스) 중 일부


1
2
3
4
5
6
7
8
9
    @Override
    public void update(MemoDTO dto) {
        memoDao.memo_update(dto); //memoDAO의 update 메소드를 실행
    }
 
    @Override
    public void delete(int idx) {
        memoDao.memo_delete(idx); //memoDAO의 delete 메소드를 실행
    }
cs





728x90
반응형
: