본문 바로가기

Spring Boot/Spring Boot

53 : JPA로 삭제와 리스트 출력 review (Springboot + JPA)

 

 

JPA로 쿼리작성 1 (삭제&리스트출력)

51 : JPA로 쿼리작성 (SpringbootApi) MyBatis - mapper로 쿼리를 가지고 오는 방법 말고 jap를 사용하여 쿼리를 실행해보자. 이전까지 만들어왔던 SpringbootApi에 작성한다. BoardJpa boardjap 디렉토리 안에 bo..

dwc04112.tistory.com

위 글은 내가 작성한 코드

 

 


리스트 출력 

(isDel = "N" 값만 출력)

// Service    
    public List<Board> getBoardList() {
        return boardRepository.findBoardsByIsDel("N");
    }
    
    
// Repository
@Repository
public interface BoardRepository extends CrudRepository<Board, Integer> {
    List<Board> findAll();
    List<Board> findBoardsByIsDel(String isDel);
    //    Board findBoardById(Integer id);
    Optional<Board> findBoardById(int id);
}

findByIsDelEquals("N") 코드로 작성했었는데

리뷰에서 본 findBoardsByIsDel("N") 이 코드로도 똑같이 동작이 된다

 


삭제코드

    public ApiResponse<BoardDTO> updateIsDelBoardById(int id, String boardPassword) {
      
        Optional<Board> boardData = boardRepository.findBoardById(id);
        // 위 boardData가 null 이면 RuntimeException 발생시키고 메소드 종료.
        Board data = boardData.orElseThrow(() -> new RuntimeException("no data"));
        // password 비교
        if(data.getPassword().equals(boardPassword)){
            data.setIsDel("Y");
            boardRepository.save(data); // JPA는 INSERT나 UPDATE 같이 save()를 호출한다.
            return new ApiResponse(true, "board id " + id + " is successfully deleted");
        } else {
            return new ApiResponse(false, "failed to delete board id " + id);
        }
    }

optional이란?

 

orElseThrow()를 쓴다면 Null값을 if문 없이 처리할 수 있다.

boardData.orElseThrow 를 통해 null값일때 RuntimeException발생시키고 메소드 종료시킨다.

이 부분을 제외하면 꽤 비슷하게 코드를 구현했다