728x90
★ 검색 확인 연산자
- null 값 확인
//[Is}Null, [Is]NotNull
//- 컬럼 값이 null인 레코드 검색
//[Is]Empty, [Is]NotEmpty
//- 컬럼값이 null이거나 빈문자열인 레코드 검색
- null 값 확인 ex)
List<Item> list = itemRepo.findByOwnerNull();
List<Item> list = itemRepo.findByOwnerEmpty();
List<Item> list = itemRepo.findByOwnerNotNull();
- 정렬
//정렬
//List<Item> list = itemRepo.findAll(Sort.by(Sort.Direction.ASC, "price"));
//List<Item> list = itemRepo.findAll(Sort.by("name")); //오름차순
//List<Item> list = itemRepo.findAllByOrderByColorDesc();
//List<Item> list = itemRepo.findAllByOrderByColorDesc("홍길동");
- 관계연산자
//[Is]GreaterThan, [Is]LessThan, [Is]Between
//[Is]GreaterThanEqual, [Is]LessThanEqual
//List<Item> list = itemRepo.findByPriceGreaterThan(100000, Sort.by("price"));
//List<Item> list = itemRepo.findByPriceLessThan(100000);
//List<Item> list = itemRepo.findByPriceBetween(90000, 120000);
//List<Item> list = itemRepo.findByOrderdateBetween("2023-06-25", "2023-06-27");
- IgnoreCase : 특정 컬럼의 대소문자를 구분하지 않고 검색
//List<Item> list = itemRepo.findByColorIgnoreCase("white");
//where upper(color) = upper(?)
- In, NotIn : where color in ('yellow', 'blue')
/*
List<String> colors = new ArrayList<String>();
colors.add("yellow");
colors.add("blue");
List<Item> list = itemRepo.findByColorIn(colors);
*/
List<Item> list = itemRepo.findByOwnerIn(new String[]{"홍길동", "아무개"});
// NotIn
List<Item> list = itemRepo.findByOwnerNotIn(new String[]{"홍길동", "아무개"});
★ 도메인 클래스 컨버터(Domain Class Converter)
- PK를 넘겨서, 바로 Entity를 조회할 수 있다.
@GetMapping("/item/m14/{name}")
public String m14(Model model, @PathVariable("name") Item result) {
//item/m13?name=마우스
//item/m14/마우스
model.addAttribute("result", result);
return "item/result";
}
- First/Top
//Item result = itemRepo.findFirstByOrderByPriceAsc();
//Item result = itemRepo.findTopByOrderByPriceAsc();
//model.addAttribute("result", result);
List<Item> list = itemRepo.findTop3ByOrderByPriceDesc();
★ 페이징, Paging
@GetMapping("/item/m16")
public String m16(Model model, int page) {
PageRequest pageRequest = PageRequest.of(page, 5, Sort.by("name"));
List<Item> list = itemRepo.findPageListBy(pageRequest);
model.addAttribute("list", list);
return "item/result";
}
★ 사용자 쿼리 작성
- 모든 컬럼 가져오기
//@Query
//- 사용자 쿼리 작성
//- 쿼리 메소드 키워드로 작성 불가능 쿼리 > 직접 SQL 작성
//select * from Item
List<Item> list = itemRepo.findAllItem();
- 특정 색상 컬럼 가져오기
@GetMapping("/item/m18")
public String m18(Model model, String color) {
List<Item> list = itemRepo.findAllItemByColor(color);
model.addAttribute("list", list);
return "item/result";
}
★ ItemRepository.java
//JpaRepository <엔티티타입, PK자료형>
//- ItemRepository > 이름은 자유
//- 엔티티명 > Repository
public interface ItemRepository extends JpaRepository<Item, String> {
//추상 메소드
//1. JpaRepository 상속 메소드 > 기본
//2. 사용자 정의 메소드 > 확장
Item findByName(String name);
Item findByNameIs(String name);
Item findByNameEquals(String name);
Item findByPrice(int price);
Item findByColorAndOwner(String color, String owner);
Item findByColorAndOwnerAndPrice(String color, String owner, int price);
//Item findByColorOrOwner(String color, String owner);
Item findByColorOrPrice(String color, int price);
List<Item> findByColor(String color);
List<Item> findByColor(String color, Sort sort);
List<Item> findByColorAndPrice(String color, int price);
List<Item> findByColorOrOwner(String color, String owner);
List<Item> findByNameLike(String word);
List<Item> findByNameEndingWith(String word);
//List<Item> findByOwnerNull();
List<Item> findByOwnerNotNull();
List<Item> findAllByOrderByColor();
List<Item> findAllByOrderByColorDesc();
//List<Item> findAllByOrderByColorDesc(String string);
List<Item> findByPriceGreaterThan(int i, Sort by);
List<Item> findByPriceLessThan(int i);
List<Item> findByPriceBetween(int min, int max);
List<Item> findByOrderdateBetween(String string, String string2);
List<Item> findByColorIgnoreCase(String string);
List<Item> findByColorIn(List<String> colors);
List<Item> findByOwnerIn(String[] strings);
List<Item> findByOwnerNotIn(String[] strings);
Item findFirstByOrderByPriceAsc();
Item findTopByOrderByPriceAsc();
List<Item> findTop3ByOrderByPriceDesc();
List<Item> findPageListBy(PageRequest pageRequest);
@Query(value="select * from Item", nativeQuery = true)
List<Item> findAllItem();
//JPQL > Java Persistence Query Language
@Query(value="select * from Item where color = :color", nativeQuery = true)
List<Item> findAllItemByColor(@Param("color") String color);
}
728x90
'Spring' 카테고리의 다른 글
Spring Boot STEP 6 - JPA (0) | 2023.07.01 |
---|---|
Spring Boot STEP 5 - Thymeleaf3 (0) | 2023.06.29 |
Spring Boot STEP 4 - Thymeleaf2 (0) | 2023.06.28 |
Spring Boot STEP 3 - Thymeleaf (0) | 2023.06.27 |
Spring Boot STEP 2 - 기본적인 CRUD 사용 (0) | 2023.06.26 |