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 값이 아닌 현재날짜와 현재시간이 잘 나온다