Wanna be Brilliant Full-Stack Developer
SpringBoot Blog 만들기 id로 select 테스트하기 본문
package com.cos.blog.test;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@RestController
public class DummnyControllerTest {
@Autowired // 의존성 주입(DI)
private UserRepository userRepository;
// {id} 주소로 파마레터를 전달 받을 수 있음.
// http://localhost:8000/blog/dummy/user/3
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id) {
//user/4을 찾으면 내가 데이터베이스에서 못찾아오게 되면 user가 null이 될것 아냐?
// 그럼 return null이 리턴이 되자나. 그러면 프로그램에 문제가 있지 않겠니?
// Optional로 너의 User객체를 감싸서 가져올테니 null인지 아닌지 판단해서 return해!!
User user = userRepository.findById(id).orElseGet(new Supplier<User>() {
@Override
public User get() {
// TODO Auto-generated method stub
return new User();
}
});
return user;
}
//http://localhost:8000/blog/dummy/join (요청)
//http의 body에 username, password, email 데이터를 가지고(요청)
@PostMapping("/dummy/join")
public String join(User user) { //key=value (약속된 규칙)
System.out.println("id : " + user.getId());
System.out.println("username : "+user.getUsername());
System.out.println("password : "+user.getPassword());
System.out.println("email : "+user.getEmail());
System.out.println("role: " +user.getRole());
System.out.println("createDate : " +user.getCreateDate());
user.setRole(RoleType.USER);
userRepository.save(user);
return "회원가입이 완료되었습니다";
}
}
package com.cos.blog.test;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@RestController
public class DummnyControllerTest {
@Autowired // 의존성 주입(DI)
private UserRepository userRepository;
// {id} 주소로 파마레터를 전달 받을 수 있음.
// http://localhost:8000/blog/dummy/user/3
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id) {
//user/4을 찾으면 내가 데이터베이스에서 못찾아오게 되면 user가 null이 될것 아냐?
// 그럼 return null이 리턴이 되자나. 그러면 프로그램에 문제가 있지 않겠니?
// Optional로 너의 User객체를 감싸서 가져올테니 null인지 아닌지 판단해서 return해!!
User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
@Override
public IllegalArgumentException get() {
// TODO Auto-generated method stub
return new IllegalArgumentException("해당 유저는 없습니다. id :" +id);
}
});
return user;
}
//http://localhost:8000/blog/dummy/join (요청)
//http의 body에 username, password, email 데이터를 가지고(요청)
@PostMapping("/dummy/join")
public String join(User user) { //key=value (약속된 규칙)
System.out.println("id : " + user.getId());
System.out.println("username : "+user.getUsername());
System.out.println("password : "+user.getPassword());
System.out.println("email : "+user.getEmail());
System.out.println("role: " +user.getRole());
System.out.println("createDate : " +user.getCreateDate());
user.setRole(RoleType.USER);
userRepository.save(user);
return "회원가입이 완료되었습니다";
}
}
나중에는 스프링에서 어떻게 해야하는가? llegalArgumentException 이런 익셉션이 발생을 하면
애를 가로채서 에러 페이지를 저런걸 보여주는것보다는 사용자에게 다른 에러페이지를 보여주는것이 좋다.
package com.cos.blog.test;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@RestController
public class DummnyControllerTest {
@Autowired // 의존성 주입(DI)
private UserRepository userRepository;
// {id} 주소로 파마레터를 전달 받을 수 있음.
// http://localhost:8000/blog/dummy/user/3
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id) {
//user/4을 찾으면 내가 데이터베이스에서 못찾아오게 되면 user가 null이 될것 아냐?
// 그럼 return null이 리턴이 되자나. 그러면 프로그램에 문제가 있지 않겠니?
// Optional로 너의 User객체를 감싸서 가져올테니 null인지 아닌지 판단해서 return해!!
User user = userRepository.findById(id).get();
return user;
}
//http://localhost:8000/blog/dummy/join (요청)
//http의 body에 username, password, email 데이터를 가지고(요청)
@PostMapping("/dummy/join")
public String join(User user) { //key=value (약속된 규칙)
System.out.println("id : " + user.getId());
System.out.println("username : "+user.getUsername());
System.out.println("password : "+user.getPassword());
System.out.println("email : "+user.getEmail());
System.out.println("role: " +user.getRole());
System.out.println("createDate : " +user.getCreateDate());
user.setRole(RoleType.USER);
userRepository.save(user);
return "회원가입이 완료되었습니다";
}
}
get으로 하면 어떻게 되는가 보자!
package com.cos.blog.test;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@RestController
public class DummnyControllerTest {
@Autowired // 의존성 주입(DI)
private UserRepository userRepository;
// {id} 주소로 파마레터를 전달 받을 수 있음.
// http://localhost:8000/blog/dummy/user/3
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id) {
//user/4을 찾으면 내가 데이터베이스에서 못찾아오게 되면 user가 null이 될것 아냐?
// 그럼 return null이 리턴이 되자나. 그러면 프로그램에 문제가 있지 않겠니?
// Optional로 너의 User객체를 감싸서 가져올테니 null인지 아닌지 판단해서 return해!!
User user = userRepository.findById(id).orElseGet(new Supplier<User>() {
@Override
public User get() {
// TODO Auto-generated method stub
return new User();
}
});
return user;
}
//http://localhost:8000/blog/dummy/join (요청)
//http의 body에 username, password, email 데이터를 가지고(요청)
@PostMapping("/dummy/join")
public String join(User user) { //key=value (약속된 규칙)
System.out.println("id : " + user.getId());
System.out.println("username : "+user.getUsername());
System.out.println("password : "+user.getPassword());
System.out.println("email : "+user.getEmail());
System.out.println("role: " +user.getRole());
System.out.println("createDate : " +user.getCreateDate());
user.setRole(RoleType.USER);
userRepository.save(user);
return "회원가입이 완료되었습니다";
}
}
람다식이라는것도 있다.
package com.cos.blog.test;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
//html파일이 아니라 data를 리턴해주는 controller = RestController
@RestController
public class DummnyControllerTest {
@Autowired // 의존성 주입(DI)
private UserRepository userRepository;
// {id} 주소로 파마레터를 전달 받을 수 있음.
// http://localhost:8000/blog/dummy/user/3
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id) {
//user/4을 찾으면 내가 데이터베이스에서 못찾아오게 되면 user가 null이 될것 아냐?
// 그럼 return null이 리턴이 되자나. 그러면 프로그램에 문제가 있지 않겠니?
// Optional로 너의 User객체를 감싸서 가져올테니 null인지 아닌지 판단해서 return해!!
User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
@Override
public IllegalArgumentException get() {
return new IllegalArgumentException("해당 유저는 없습니다. id :" +id);
}
});
// 요청 : 웹브라우저
//user 객체 = 자바 오브젝트
// 변환( 웹브라우저가 이해할 수 있는 데이터) -> json (Gson 라이브러리)
// 스프링부트 = MessageConverter라는 애가 응답시에 자동 작동
// 만약에 자바 오브젝트를 리턴하게 되면 MessageConverter가 Jackson 라이브러리르 호출해서
//user 오브젝트를 json으로 변환해서 브라우저에게 던져줍니다.
return user;
}
//http://localhost:8000/blog/dummy/join (요청)
//http의 body에 username, password, email 데이터를 가지고(요청)
@PostMapping("/dummy/join")
public String join(User user) { //key=value (약속된 규칙)
System.out.println("id : " + user.getId());
System.out.println("username : "+user.getUsername());
System.out.println("password : "+user.getPassword());
System.out.println("email : "+user.getEmail());
System.out.println("role: " +user.getRole());
System.out.println("createDate : " +user.getCreateDate());
user.setRole(RoleType.USER);
userRepository.save(user);
return "회원가입이 완료되었습니다";
}
}
'Back-End > 블로그 만들기 With SpringBoot' 카테고리의 다른 글
SpringBoot Blog 만들기 전체 select 및 paging 테스트 (0) | 2023.03.07 |
---|---|
SpringBoot Blog 만들기 회원가입을 위한 enum 사용법 (1) | 2023.03.03 |
SpringBoot Blog만들기 회원가입을 위한 insert 테스트 (0) | 2023.02.23 |
SpringBoot blog 만들기 Json 사용법 (1) | 2023.02.16 |
SpringBoot Blog 만들기 연관관계의 주인 (0) | 2023.02.15 |