BookRepository.java

팡태(❁´◡`❁)·2022년 3월 15일
0

java

목록 보기
32/36
package com.example.repository;

import java.util.Collection;
import java.util.List;

import com.example.entity.Book;

import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends MongoRepository<Book, Long> {

    // 기본적인 CRUD(읽기, 쓰기, 수정, 삭제)
    // 1. 책등록

    // 4. 책번호를 누르면 책 상세내용 표시

    // 검색한 개수 + 페이지네이션
    @Query(value = "{title: {$regex : ?0}}")
    List<Book> getBookList(String title, Pageable pageable);

    // 검색에 해당하는 전체 개수
    @Query(value = "{title: {$regex : ?0}}", count = true)
    long getBookCount(String title);

    // 일치하는 것 조회
    @Query(value = "{code: ?0}")
    Book getBookOne(long code);

    // 일치하는 것 개수 확인
    @Query(value = "{code: ?0}")
    Book countBookOne(long code);

    // 코드가 일치하는 것 삭제
    @Query(value = "{code: ?0}", delete = true)
    long deleteBookCode(long code);

    // 존재유무 확인
    @Query(value = "{code: ?0}", exists = true)
    boolean isBookCode(long code);

    // 코드가 여러개인 것 조회
    @Query(value = "{code: {$in: ?0}}")
    List<Book> getBookCodeList(Collection<Long> code);

    // 제목과 가격이 일치하는 것 조회
    @Query(value = "{title: ?0, price: ?1}")
    List<Book> getBookTitleAndPriceList(String title, long price);

    @Query(value = "{title: :#{#title}, price: :#{#price} }")
    List<Book> getBookTitleAndPriceList1(
            @Param("price") long p, @Param("title") String t);

    // 주로 이걸 씀
    @Query(value = "{title: :#{#book.title}, price: :#{#book.price} }")
    List<Book> getBookTitleAndPriceList2(@Param("book") Book book);

    // 제목 또는 가격이 일치하는 것 조회
    @Query(value = "{$or: [{title: ?0}, {price: ?1}]}")
    List<Book> getBookTitleOrPriceList(String title, long price);

    // 전체 목록 가져오기. code기준 내림차순
    @Query(value = "{}", sort = "{code: -1}")
    List<Book> getBookListSortCode();

    // 전체 목록 가져오기. code기준 내림차순
    @Query(value = "{}", sort = "{code: -1}", fields = "{title:1, price:1}")
    List<Book> getBookListSortCodeProjection();

    // 가격이 0 이상인 것
    @Query(value = "{price: {$gte : ?0 }}")
    List<Book> getBookPriceGte(long price);
}

0개의 댓글