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발생시키고 메소드 종료시킨다.
이 부분을 제외하면 꽤 비슷하게 코드를 구현했다

'Spring Boot > Spring Boot' 카테고리의 다른 글
56 : 복수의 트랜잭션으로 Comment 처리 (Springboot + JPA) (0) | 2021.10.27 |
---|---|
55 : JPA+Pageable 페이징처리 (Springboot + JPA) (0) | 2021.10.26 |
51 : JPA로 CRUD 기능 구현 (SpringbootApi) (0) | 2021.10.25 |
50 : /test - sequence diagram (0) | 2021.10.19 |
49 : /authenticate - Sequence Diagram (Springboot) (0) | 2021.10.14 |