Oracle와 mybatis 연동 실습 (글수정, 글삭제 구현)
Back-End/Spring 2019. 6. 10. 11:32MemoService.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 |
'Back-End > Spring' 카테고리의 다른 글
상품관리 (상품 목록 보기 구현) (0) | 2019.06.12 |
---|---|
상품테이블 만들기, File Upload 테스트 (0) | 2019.06.11 |
PSA , 스프링에서 PSA형식으로 되어있는 것들(인강+블로그) (0) | 2019.06.08 |
Oracle와 mybatis 연동 실습 (글상세보기 구현) (0) | 2019.06.07 |
PSA (Portable Service Abstraction) (0) | 2019.06.06 |