기록해! 정리해!

JPAJarThymeleaf-2 (Pageable, JPQL,네이티브쿼리) 본문

SpringBoot

JPAJarThymeleaf-2 (Pageable, JPQL,네이티브쿼리)

zsuling 2022. 10. 19. 16:59

* page 임포트할때 domain 임

 

1. Pageable

1) 

	List<Board> findByTitleContainingOrWriterContaining(String str1, String str2, Pageable paging);

2)

@Test
	public void selectLike() {
		
		Pageable paging = PageRequest.of(0, 3); //(페이지번호, 페이지 사이즈)
		List<Board> li1 =boardRepo.findByTitleContainingOrWriterContaining("J", "닭", paging);
		for(Board m1 : li1) {
			System.out.println(m1);
		 }
	}

>>

+ 정렬

	@Test
	public  void   selectLike() {	
				 
		 Pageable paging = PageRequest.of(0, 3, Sort.Direction.DESC,"seq");  // (페이지번호, 페이지 사이즈)
		 List<Board> li2
		    =boardRepo.findByTitleContainingOrWriterContaining("JPA", "만수", paging);
		 for(Board m2 : li2) {
			 System.out.println(m2);
		 }	
	}

 

2.

Page<Board> findByTitleContaining(String str1, Pageable paging);
@Test
	public  void   selectLike() {	
				 
		 Pageable paging = PageRequest.of(0, 3, Sort.Direction.DESC,"seq");  // (페이지번호, 페이지 사이즈)
		 Page<Board> li2
		    =boardRepo.findByTitleContaining("JPA", paging);
		 for(Board m2 : li2) {
			 System.out.println(m2);
		 }	
	}

3. pageInfo

Page<Board> findByTitleContaining(String str1, Pageable paging);
	@Test
	public  void   selectLike() {	
				 
		 Pageable paging = PageRequest.of(0, 3, Sort.Direction.DESC,"seq");  // (페이지번호, 페이지 사이즈)
		 
		 Page<Board> pageInfo=boardRepo.findByTitleContaining("J", paging);
		 System.out.println("Page SIZE:" + pageInfo.getSize());
		 System.out.println("TotalPages :" + pageInfo.getTotalPages());
		 System.out.println("TotalElements:" + pageInfo.getTotalElements());
		 System.out.println("nextPageable:" + pageInfo.nextPageable());
		 
		 Page<Board> li2
		    =boardRepo.findByTitleContaining("JPA", paging);
		 for(Board m2 : li2) {
			 System.out.println(m2);
		 }	
	}


4. JPQL

- 연관관계 (join)

- 네이티브 쿼리 사용시 

 

 +위치기반 파라미터 사용하기

	@Query ("SELECT b FROM Board b WHERE b.title like %?1% ORDER BY b.seq DESC")
	List<Board> queryAnnotationTest1(String str);

%?1% : 첫번째위치

%?2% : 두번째위치

	@Test
	public  void   selectLike() {	
		 
		 List<Board> li2=boardRepo.queryAnnotationTest1("JPA");
		 for(Board m2 : li2) {
			 System.out.println(m2);
		 }	
	}

>>

+ 이름 기반 파라미터 사용하기

	  // 이름 기반 파라미터 사용하기 
	  @Query("SELECT b FROM  Board b  WHERE  b.title  like %:str1% ORDER BY b.seq  DESC")
	  List<Board> queryAnnotationTest2(@Param("str1") String  str1);
	@Test
	public  void   selectLike() {	
	
	 // 위치기반	
	 List<Board> li2=boardRepo.queryAnnotationTest1("JPA");
	 for(Board m2 : li2) {
		 System.out.println(m2);
	 }
	 
	 // 이름 기반 
	 List<Board> li3=boardRepo.queryAnnotationTest2("R");
	 for(Board m3 : li3) {
		 System.out.println(m3);
	 }
	}

 

+ 특정 컬럼만 사용하기

 // 특정 컬럼만 사용하기 
	  @Query("SELECT b.seq, b.title FROM  Board b  WHERE  b.title  like %?1% ORDER BY b.seq  DESC")
	  List<Object[]> queryAnnotationTest3(String  str);
	  }
	 List<Object[]> li4 = boardRepo.queryAnnotationTest3("R");
	 for(Object[] m4 : li4) {
		 System.out.println(Arrays.toString(m4));
	}
	}


5. 네이티브 쿼리 사용하기 (SQL)

(컬럼명, 테이블 명을 사용한다)

       @Query(value="select seq, title, writer from board1019 where title like '%'||?1||'%' order by seq", nativeQuery=true)
       List<Object[]> queryAnnotationTest4(String  str);
	 List<Object[]> li5 = boardRepo.queryAnnotationTest4("J");
	 for(Object[] m5 : li5) {
		 System.out.println(Arrays.toString(m5));
	}

+ 날짜

 

'SpringBoot' 카테고리의 다른 글

JPAJarThymeleaf-2 (Junit 연습문제)  (0) 2022.10.19
JPAJarThymeleaf-2 (Member)  (0) 2022.10.19
JPAJarThymeleaf-2 (Test)  (0) 2022.10.19
JPAJarThymeleaf-2 (Board, QLogin)  (0) 2022.10.19
JPAJarTymeleaf-1 검색하기 ( 동적 DSL 사용하기 )  (0) 2022.10.18
Comments