Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 유니티기초
- 타입스크립트 기본문법
- 스프링부트 블로그만들기
- python 괄호 회전하기
- 스프링부트 블로그
- 유니티Cube
- 타입스크립트 기초문법
- spring jpa 사이드프로젝트
- springboot 미니프로젝트
- 타입스크립트 기초
- JS기초
- typescript 기초문법
- 파이썬 기초
- 스프링게시판프로젝트
- 스프링부트 게시판만들기
- springboot 게시판 프로젝트
- 스프링부트 미니프로젝트
- 유니티
- 유니티Material
- springboot 사이드프로젝트
- jpa 게시판
- 스프링부트 회원가입
- spring jpa 게시판
- springboot 게시판만들기
- 프로그래머스 괄호 회전하기 python
- 괄호 회전하기 파이썬
- 스프링부트 update
- 스프링 게시판 만들기
- springboot 게시판
- 파이썬 괄호 회전하기
Archives
- Today
- Total
Digking's cave
My First Blog Project (7) : 전체 user Select / ID로 Select / 페이징 본문
Spring/My First Blog Project
My First Blog Project (7) : 전체 user Select / ID로 Select / 페이징
디깅 2022. 12. 16. 17:04728x90
DummyControllerTest.java
package com.cos.blog.test;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
import java.util.function.Supplier;
@RestController
public class DummyControllerTest {
@Autowired
private UserRepository userRepository;
// 회원 가입
@PostMapping("/dummy/join")
public String join(User user){
user.setRoles(RoleType.USER);
userRepository.save(user);
return "회원가입 완료";
}
// 회원 모두 조회
@GetMapping("/dummy/users")
public List<User> list(){
return userRepository.findAll();
}
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id){
//IllegalArgumentException 을 return
User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
@Override
public IllegalArgumentException get() {
return new IllegalArgumentException("id "+id+" : 해당 유저는 없습니다.");
}
});
return user;
}
// 한 페이지 당 2건의 데이터를 리턴 (페이징)
@GetMapping("/dummy/user")
public List<User> pageList(@PageableDefault(size = 2,sort = "id",direction = Sort.Direction.DESC)Pageable pageable){
Page<User> pagingUser =userRepository.findAll(pageable);
List<User> users =pagingUser.getContent();
return users;
}
}
-
findById의 return타입은 optional이다.
만약 찾는 값이 null이면 optional로 user객체 감싸온 후에 null인지 판단 후 return
👇Supplier 사용하여 id로 찾는 방법👇
// {id}주소로 파라미터를 전달받을 수 있음
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id){
User user = userRepository.findById(id).orElseGet(new Supplier<User>() {
@Override
public User get() {
return new User();
}
});
}
Supplier가 인터페이스라 overriding 해준다.
new User();
- 만약 값이 없다면 빈 객체를 user에 넣어서 만들어준다.
👇IllegalArgumentException 을 활용하는 방법👇
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id){
//IllegalArgumentException 을 return
User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
@Override
public IllegalArgumentException get() {
return new IllegalArgumentException("id "+id+" : 해당 유저는 없습니다.");
}
});
return user;
}
- IllegalArgumentException 로 에러생겼을 경우 에러 페이지 나오도록함
-
웹브라우저가 요청 -> user 객체로 리턴해줌
user 객체 = 자바 오브젝트 라서 json으로 변경해서 던져야 웹브라우저가 이해함
springboot 는 MessageConverter라는 애가 응답시에 자동 작동해서,
만약에 자바 오브젝트를 리턴하게 되면 MessageConverter가 Jackson 라이브러리를 호출해서 user 오브젝트를 json으로 변환해서 브라우저에게 던져준다.
# 페이징
@GetMapping("/dummy/user")
public List<User> pageList(@PageableDefault(size = 2,sort = "id",direction = Sort.Direction.DESC)Pageable pageable){
Page<User> pagingUser =userRepository.findAll(pageable);
List<User> users =pagingUser.getContent();
return users;
}
@PageableDefault(size = 2,sort = "id",direction = Sort.Direction.DESC)Pageable pageable)
- 기본 페이징 전략이 2건씩 들고와서 id로 정렬하는데 id를 최신순으로 해서 페이징한다.
pagingUser.isFirst() : 첫 번째 페이지인지 확인
pagingUser.isLast() : 마지막 페이지인지 확인
반응형
'Spring > My First Blog Project' 카테고리의 다른 글
My First Blog Project (9) : Exception 처리 (0) | 2022.12.16 |
---|---|
My First Blog Project (8) : Update / Delete / 더티체킹 / @Transactional (0) | 2022.12.16 |
My First Blog Project (6) : 회원가입 구현 (Insert / ENUM 사용) (0) | 2022.12.16 |
My First Blog Project (5) : 테이블 만들기(User,Board,Reply) / JPA 설정 / JPA 연관관계매핑 /양방향매핑 (0) | 2022.12.16 |
My First Blog Project (4) : Maven / Lombok / Yaml / Jsp 설정 (0) | 2022.12.16 |