9. 게시글 수정 - 스프링부트(SpringBoot)

Haeun Shin·2021년 1월 28일
0

스프링 부트

목록 보기
9/10
post-thumbnail

1. 비즈니스 로직

BoardMapper.xml

  • 게시글을 수정하는 쿼리 작성
<!-- 5. 게시글 수정 -->
<update id="updateBoard" parameterType="BoardDTO">
  UPDATE
  	TB_Board
  SET
  	  update_time = sysdate
    , title = #{title}
    , content = #{content}
    , writer = #{writer}
    , notice_yn = NVL(#{noticeYn, jdbcType=VARCHAR}, 'N')
    , secret_yn = NVL(#{secretYn, jdbcType=VARCHAR}, 'N')
  WHERE
  	idx = #{idx}
</update>

BoardMapper.java

  • DB와 연결하는 Mapper 인터페이스 작성
// 게시글 수정
public int updateBoard(BoardDTO params);

BoardService.java

  • Service 인터페이스는 추가로 작성하지 않고 게시글 등록을 수정하여 사용한다.
// 게시글 등록 (+ 수정)
public boolean registerBoard(BoardDTO params);

BoardServiceImpl.java

  • 마찬가지로, 추가로 작성하지 않고 게시글 등록을 수정하여 사용한다.
// 게시글 등록
@Override
public boolean registerBoard(BoardDTO params) {

  int queryResult = 0;

  // idx(인덱스)가 없다는 건, 아직 생성되지 않는 게시물이기 때문에,
  // 게시물을 생성하는 쿼리 실행
  if(params.getIdx() == null) {
  	queryResult = boardMapper.insertBoard(params);
  } 
  // idx(인덱스)가 있으면, 게시물이 존재하므로, 게시물을 수정하는 쿼리 실행
  else {
  	queryResult = boardMapper.updateBoard(params);
  }

  // 쿼리가 정상적으로 실행되면 1을 반환함.
  // 정상적으로 실행되면 true, 아니면 false
  return (queryResult == 1) ? true : false;
}

BoardController.java

  • 컨트롤러도 기본의 게시글 등록을 수정하여 사용한다.
// 게시글 등록 GET
@GetMapping(value = "/board/write.do")
public String openBoardWrite(@RequestParam(value = "idx", required = false) Long idx, Model model) {
		
  // idx가 없으면 게시물이 생성되지 않은 상태이기 때문에,
  // 새로운 BoardDTO(즉, null 상태)를 모델에 담아 리턴
  if(idx == null) {
  	model.addAttribute("board", new BoardDTO());
  } 
  // idx가 있으면 게시물이 생성되어 있는 상태이기 때문에,
  // 게시물을 조회하고, 그 정보를 모델에 담아 리턴
  else {
  	BoardDTO board = boardService.getBoardDetail(idx);

  // 아무 정보도 조회되지 않았다면, list로 리다이렉트
  	if(board == null) {
    	return "redirect:/board/list.do";
    }

    model.addAttribute("board", board);
  }

  return "board/write";
}






2. 인터페이스

write.html

  • 기존의 write.html을 그대로 사용한다.

    이미지를 보면 값이 넣어지도록 설정해놨다. 그동안은 넣을 값이 없었기 때문에 아무것도 보여지지 않았던 것이며, 수정버튼을 누르면 값이 존재하기 때문에 write.html에 표시된다.


    또한, 수정버튼을 누르면 idx값이 전달하게 되어 수정쿼리를 수행하게 된다.






3. 확인

/board/view.do

  • 게시물 조회에서 수정 버튼 누른 후, 내용 수정하고 저장.

0개의 댓글