2023.12.12 - [Spring/[PROJECT] 도서 대여 프로그램] - 💚 책 등록하기 💚
📖 Controller
☑️ 전체 조회 : 등록되어 있는 모든 책을 조회하는 메서드 (getAllBooks) 를 가진 service 를 호출한다
☑️ 선택 조회 : 조회하고자 하는 책의 id 값을 입력받으면, service 의 메서드 (getBookById) 를 호출한다
...
public class BookController {
private final BookService bookService;
...
// 책 조회 (전체)
@GetMapping()
public List<ResponseBookListDto> getAllBooks() {
return bookService.getAllBooks();
}
// 책 조회 (하나)
@GetMapping("/{id}")
public ResponseEntity<ResponseBookDto> getBookById(@PathVariable("id") Long id) {
Book book = bookService.getBookById(id);
// 조회하고자 하는 책의 유무 확인
if (book == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
ResponseBookDto bookDto = ResponseBookDto.responseBook(book);
return new ResponseEntity<>(bookDto, HttpStatus.OK);
}
}
📖 Service
☑️ 전체 조회 : 원하는 정보만 반환하기 위해 Dto 에 저장된 메서드 (responseBookList) 를 사용한다
☑️ 선택 조회 : Repository 의 findById 메서드를 사용한다
...
public class BookService {
private final BookRepository bookRepository;
...
// 책 조회 (전체)
public List<ResponseBookListDto> getAllBooks() {
List<Book> books = bookRepository.findAll();
return books.stream()
.map(ResponseBookListDto::responseBookList)
.collect(Collectors.toList());
}
// 책 조회 (하나)
public Book getBookById(Long id) {
return bookRepository.findById(id).orElseThrow(RuntimeException::new);
}
}
📖 Repository
☑️ JpaRepository 인터페이스를 상속받음으로써 다양한 메서드 사용이 가능하다 (ex. findById)
@Repository
public interface BookRepository extends JpaRepository<Book, Long> { }
📖 Dto
☑️ 원하는 정보만 반환하기 위해 사용한다
전체 조회 : ResponseBookListDto
선택 조회 : ResponseBookDto
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResponseBookListDto {
private String title;
private String description;
private BookStatus bookStatus;
private int likeCount;
public static ResponseBookListDto responseBookList(Book book) {
ResponseBookListDto bookDto = ResponseBookListDto.builder()
.title(book.getTitle())
.description(book.getDescription())
.bookStatus(book.getBookStatus())
.likeCount(book.getLikeCount())
.build();
return bookDto;
}
}
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResponseBookDto {
private String title;
private String description;
private BookStatus bookStatus;
private int likeCount;
private Category category;
private List<BookHashtag> hashtag;
public static ResponseBookDto responseBook(Book book) {
ResponseBookDto bookDto = ResponseBookDto.builder()
.title(book.getTitle())
.description(book.getDescription())
.bookStatus(book.getBookStatus())
.likeCount(book.getLikeCount())
.category(book.getCategory())
.hashtag(book.getBookHashtags())
.build();
return bookDto;
}
}
💡TEST💡
· Postman
☑️ 전체 조회 결과
☑️ 선택 조회 결과
'Spring > [P] 도서 대여 프로그램' 카테고리의 다른 글
💛 대출한 책 조회하기 💛 (0) | 2023.12.16 |
---|---|
💛 책 대출 등록하기 💛 (0) | 2023.12.16 |
💚 책 등록하기 💚 (0) | 2023.12.12 |
🩵 Spring Security (2) 로그인 🩵 (0) | 2023.11.28 |
🩵 Spring Security (1) 회원가입 🩵 (0) | 2023.11.27 |