Springboot

2021-09-30 (Springboot - board 테이블 insert)

BSYeop 2021. 9. 30. 20:08

1. Test 테이블에 insert했던 방식과 같이 board 테이블에도 insert 해보자

BoardController.java

/* mission */
    // POST /board 해서 board 데이터 Insert 해보기
    @PostMapping(value = "/")
    public ApiResponse<BoardDTO> insertBoard(@RequestBody BoardDTO boardDTO) throws Exception {
        BoardDTO dto = boardService.insertBoard(boardDTO);
        return new ApiResponse<>(true, dto);
    }

BoardDAO.java

  int insertBoard(BoardDTO boardDTO);

BoardService.java

 public BoardDTO insertBoard(BoardDTO boardDTO) throws Exception {
        log.debug(boardDTO.toString());
        int insertedRowCount = boardDAO.insertBoard(boardDTO);
        if(insertedRowCount > 0){

            return boardDTO;
        } else {
            throw new Exception("failed to insert board data");
        }
    }

BoardMapper.xml

- parameterType에 "kr.ac.daegu.springbootapi.board.model.BoardDTO."이라고 마지막에 .을 붙이는 바람에 계속 에러가 발생했다. 어느 곳에서 에러가 난 곳을 찾지 못해 한참동안 삽질을 했다. 항상 오타에 주의하자!

- jspmvc에서 사용했던 Board 테이블이라 DB 자체에서 auto_increment를 사용하지 않고 id값을 증가시키고 싶었지만 해결하지 못해 결국 테이블을 날리고 다시 auto_increment 옵션을 추가해서 insert를 성공했다

<insert id="insertBoard" parameterType="kr.ac.daegu.springbootapi.board.model.BoardDTO">
        insert into board (author, subject, content, writeDate, writeTime, readCount, commentCount, password, replyRootId, depth, orderNum)
        values (#{author}, #{subject}, #{content}, CURDATE(), CURTIME(), 0, 0, #{password}, 0, 0, 0)
    </insert>

postman에서 데이터 전송 결과

- 현재 writeDate,writeTime 값이 DB에는 잘 저장되지만 JSON RESPONSE에는 null 값이 나와 해결 필요

2. json response시 현재 날짜와 시간이 뜨도록

BoardDTO

- 현재 날짜와 현재 시간의 데이터 타입을 바꾼다

private LocalDate writeDate;
private LocalTime writeTime;

BoardService

- 비즈니스 로직에서 날짜와 시간을 정의한다

// Inserted Date, Inserted Time 정의
        boardDTO.setWriteDate(LocalDate.now());
        boardDTO.setWriteTime(LocalTime.now());

BoardMapper

- CURDATE(),CURTIME() => #{writeDate}, #{writeTime}으로 바꿔준다

<insert id="insertBoard" parameterType="kr.ac.daegu.springbootapi.board.model.BoardDTO">
        insert into board (author, subject, content, writeDate, writeTime, readCount, commentCount, password, replyRootId, depth, orderNum)
        values (#{author}, #{subject}, #{content}, #{writeDate}, #{writeTime}, 0, 0, #{password}, 0, 0, 0)
    </insert>

이제 null 값이 아닌 현재날짜와 현재시간이 잘 나온다