웹 개발

spring boot pageable start from 1

노루아부지 2022. 6. 7. 22:54

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부터 시작한다는 것입니다.

0부터 시작하는 것 때문에 협업을 할 때 문제가 발생할 수 있습니다. front에서 사용하는 grid 라이브러리가 1부터 시작하기 때문입니다.

 

Pageable의 page, size의 기본 설정을 바꾸고 싶다면 PageableHandlerMethodArgumentResolverCustomizer interface를, sort의 기본 설정을 바꾸고 싶다면 SortHandlerMethodArgumentResolverCustomizer interface를 커스터마이징 하면 됩니다.

 

@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
    };
  }
}

 

 

코드에 수정하기 싫을 경우 다음과 같이 application.yml(properties)에 설정할 수도 있습니다.

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