Byeon's NOTE

스프링 부트 Spring Boot(5) - 간단한 게시판 만들기, 게시글 수정 및 삭제 기능 본문

스프링(Spring)

스프링 부트 Spring Boot(5) - 간단한 게시판 만들기, 게시글 수정 및 삭제 기능

SUByeon 2019. 10. 24. 20:28

저번 포스팅에서 게시글을 등록하고 조회하는 기능까지 구현하였다. 이번에는 게시글 수정, 삭제 기능을 구현하려한다.

 

수정, 삭제 기능을 구현하기 위해 먼저 Controller에 코드를 추가한다.

@RequestMapping("/board/updateBoard")  // 수정요청
public String updateBoard(BoardDto board) throws Exception {
  boardService.updateBoard(board);         //게시글 수정
  return "redirect:/board/openBoardList";  //수정완료 후 게시판 목록으로
}


@RequestMapping("/board/deleteBoard")  //삭제요청
public String deleteBoard(BoardDto board) throws Exception {
  boardService.deleteBoard(board.getBoardId());      //게시글 삭제
  return "redirect:/board/boardList";  //삭제완료 후 게시판 목록으로
}

Service Interface와 Service Class에 해당요청을 처리하는 코드를 작성한다.

// Service Interface

void updateBoard(BoardDto board) throws Exception;
void deleteBoard(int board_id) throws Exception;

//Service Class

@Override
public void updateBoard(BoardDto board) throws Exception {
  boardMapper.updateBoard(board);
}

@Override
public void deleteBoard(int board_id) throws Exception {
  boardMapper.deleteBoard(board_id)
}

Mapper Interface와 Mapper XML에 코드를 작성한다.

 

void updateBoard(BoardDto board) throws Exception;
void deleteBoard(int board_id) throws Exception;
<update id="updateBoard" parameterType="com.example.board.dto.BoardDto">
  <![CDATA[
    UPDATE t_board
    SET title = #{title}, contents = #{contents}, updater_id = 'admin', updated_At = NOW()
    WHERE board_id=#{boardId}
  ]]>
</update>

<update id="deleteBoard" parameterType="int">
  <![CDATA[
    UPDATE t_board
    SET is_deleted = 'y', updater_id = 'admin', updated_At = NOW()
    WHERE board_id=#{board_id}
  ]]>
</update>

 

이제 다음과 같이 수정해 보자.

 

결과 화면을 보면 제대로 수정되었다. 

 

그럼 이제 삭제를 해보자.

 

정상적으로 삭제 되었다. 데이터베이스를 확인해보면 삭제여부에 Y가 들어가 있는것을 확인할 수 있다.

 

게시판 조회, 추가, 수정, 삭제 모든 기능을 구현해 보았다. 이제 중간에 그냥 넘어간 것을 알아보고자 한다.

mapper.xml파일을 보면 <![CDATA[]]>를 사용한것을 볼 수 있다. 해당 코드를 사용하는 이유는 구분하기 쉽게 하기 위해서 이다. 예를 들면 아래의 코드를 보자.

<select id="insertData" parameterType="package.dto.DataDto">
  SELECT *
  FROM employee
  WHERE salary > 100000
</insert>

이 코드를 보면 WHERE절에 ' > '가 있다. 지금은 간단한 쿼리에서 비교연산이지만 만약 복잡한 쿼리였다면 알아보기 힘들 것이다. 이런것처럼 그냥 사용하면 괄호, 특수문자 등을 사용할때 보기도 어렵고 제한이 있다. 이러한 문제를 해결하기 위해 <![CDATA[]]>를 사용한다. <![CDATA[]]>안의 문장을 하나의 쿼리 문자열로 처리한다.

 

<select id="insertData" parameterType="package.dto.DataDto">
  <![CDATA[
    SELECT *
    FROM employee
    WHERE salary > 100000
  ]]>
</insert>

 

Comments