본문 바로가기
개발~/JAVA

[Spring boot] page 1부터 시작하기

by 보배곰 2020. 4. 30.

Spring data jpa를 사용하면 paging 하기 쉽게 Pageable 인터페이스를 제공해준다. 

https://docs.spring.io/spring-data/jpa/docs/2.2.7.RELEASE/reference/html/#core.web.basic

 

Spring Data JPA - Reference Documentation

Example 108. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v

docs.spring.io

고려해야할 점이 있다면, page 가 0부터 시작한다는 점이다. 

page, size의 기본 설정을 바꾸고 싶다면, interface ' PageableHandlerMethodArgumentResolverCustomizer ' 를

sort의 기본 설정을 바꾸고 싶다면, interface ' SortHandlerMethodArgumentResolverCustomizer '를 커스터마이징 해주면 된다. 

@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
	return p -> p.setOneIndexedParameters(true);
}

setOneIndexedParameter 를 true로 설정해주면, page가 1부터 시작한다. 

 

@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
	return p -> {
		p.setMaxPageSize(10);		// size=10
	};
}

setMaxPageSize에 한 페이지당 출력할 size를 정할 수 있다. 

 

전체 소스

@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

	@Bean
	public PageableHandlerMethodArgumentResolverCustomizer customize() {
		return p -> {
			p.setOneIndexedParameters(true);	// 1부터 시작
			p.setMaxPageSize(10);				// size=10
		};
	}
}

 


yml에 지정에 줄 수도 있다. 

spring:
  data:
    web:
      pageable:
        default-page-size: 10
        one-indexed-parameters: true

 


한계

이 방법은 한계가 있다.

결과로 반환된 Page 정보에 pageable.pageNumber, number 가 0부터 시작하기 때문에  request로 온 page와 -1씩 차이가 난다. 해당 한계를 감안하고 사용해야 한다.

 

 

 

'개발~ > JAVA' 카테고리의 다른 글

Kotlin 소개  (0) 2022.12.10
Log4j 사용하기  (0) 2019.12.19
JSON 빈 객체를 단말에 어떻게 내려줄까?(Android,iOS)  (0) 2019.04.25
주석이쁘게 달기  (0) 2017.06.16
[JAVA] java.util.Date  (0) 2017.03.17