Wanna be Brilliant Full-Stack Developer

SpringBoot Blog 만들기 전체 select 및 paging 테스트 본문

Back-End/블로그 만들기 With SpringBoot

SpringBoot Blog 만들기 전체 select 및 paging 테스트

Flashpacker 2023. 3. 7. 00:11


한건의 데이터가 아니라 여러건의 데이터를 리턴 받기를 할것이다! 

특별히 파라미터를 할필요는 없다. 전체를 받을것이기 떄문이다!

이렇게 해주면 끝이다. 이렇게하면 전체가 return이 되니까 리턴한 타입 List타입인데

T가 제네릭이니까

이자리가 user가 되어서 바로 return이 될것이다.

현재 데이터를 가져왔다. 시작이 배열로 시작된다. 배열 오브젝트 리턴을 받았다.

배열 오브젝트 안에 json오브젝트가 3개가 들어가 있다.

 

페이징을 해보려고 하는데 JSP에서 페이징을 하면 로직을 다짜야하는데

스프링부트에는 엄청난 JPA가 강력한 기능을 들고 있는데

findall에보 면 오버로딩이 된 pageable이라는것이 있다. \

애를 어떻게 쓰는가? 

여기서 findAll 이 리턴하는게 

Page라는것을 리턴을 한다. T는 당연히 user이다. 

// 한페이지당 2건에 데이터를 리턴받아 볼 예정
	@GetMapping("/dummy/user/page")
	public Page<User> pageList(@PageableDefault(size=2, sort="id", direction = Sort.Direction.DESC) Pageable pageable) {
		Page<User> users =	userRepository.findAll(pageable);
		return users;
	}

페이징의 기본전략은? 두건씩 데이터를 들고오고 Sort는 아이디로 하고 아이디를 최신순으로 해서 가져올것이라는 것이다

 

첫번쨰 페이지보는 법은 알고

다음페이지 보는법을 확인해보려고 한다.

주소로 다음페이지를 볼수 있다는데?! 

조금 주소가 지저분하다.
그리하여 조금 수정을 해서 충돌이 안될것이다.

http://localhost:8000/blog/dummy/user?page=0 이렇게 물음표로 쿼리 스트링으로하면 page=으로 하면

첫번쨰가 3,2가 나오고

1이라하면 두번쨰, 2라고 하면 세번쨰 라고 한다.

이렇게 size=1이라고 하면 한페이지에 하나만 나올것이다. 

 

Page<User> users = userRepository.findAll(pageable).getContent(); 이렇게 getContetnt라고하면

List유저를 리턴한다.

유저데이터가 첫번째 데이터인가요? 라고 분기처리를 할 수 있고

isLast라고 하면 마지막 데이터인가요? 라는 처리를 할 수가 있고

페이지라는 클래스가 제공을 한다. 

다 제공을 해서 어떤 로직이 다 끝나면 결과는 List를 받아서 이렇게 리턴해주는것이 좋다!