728x90
반응형
SMALL
📌 id 로 select 테스트
1. yaml -> ddl-auto 부분을 다시 create로 만들고 실행시켜서 쿼리문을 깨끗하게 만든다.
2. postman을 이용해 다시 데이터를 집어놓고 , yaml -> ddl-auto 부분을 다시 update로 바꾼다.
3. DummycontrollerTest --> .orElseGet(new Supplier<User>()
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 DummyControllerTest {
@Autowired // 의존성주입(=DI)
private UserRepository userRepository;
//{id} 주소로 파라미터를 전달 받을 수 있음
// http://localhost:8081/blog/dummy/user/3
@GetMapping("dummy/user/{id}")
public User detail(@PathVariable int id) {
//findbyid가 optional인 이유
// user/4을 찾으면 내가 데이터베이스에서 못찾아오게되면 user가 null값이 될텐데..
// 그럼 return값으로 null이 리턴이 되자나, 그럼 프로그램에 문제가 있지않겠니?
// 그래서 optional로 너의 user객체를 감싸서 가져올테니 null인지 아닌지 판단해서 return해
User user = userRepository.findById(id).orElseGet(new Supplier<User>() {
//만약 DB에 해당하는 id값을 select한다면 바로 user로 들어오는데.
// 해당하지 않으면 orElseGet으로 들어오면서
// User()라는 빈객체를 user에 넣어줄것이다.
// 빈객체를 넣어주면 적어도 null은 아니게 된다.
@Override
public User get() {
// TODO Auto-generated method stub
return new User();
}
});
return user;
}
//http://localhost8081/blog/dummy/join(요청) --> request
//http의 body에 username, password, email데이터를 가지고 요청
@PostMapping("/dummy/join") // insert 문이니까 post방식
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"회원가입이 완료되엇습니다.";
}
}
4. DummycontrollerTest --> .orElseThrow(new Supplier<IllegalArgumentException>()
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 DummyControllerTest {
@Autowired // 의존성주입(=DI)
private UserRepository userRepository;
//{id} 주소로 파라미터를 전달 받을 수 있음
// http://localhost:8081/blog/dummy/user/3
@GetMapping("dummy/user/{id}")
public User detail(@PathVariable int id) {
//findbyid가 optional인 이유
// 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://localhost8081/blog/dummy/join(요청) --> request
//http의 body에 username, password, email데이터를 가지고 요청
@PostMapping("/dummy/join") // insert 문이니까 post방식
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"회원가입이 완료되엇습니다.";
}
}
5. http://localhost:8081/blog/dummy/user/3
---> 아까 DB에 저장했던 3번의 데이터가 리턴된다.
5. http://localhost:8081/blog/dummy/user/4
----> DB에는 3번까지 데이터를 삽입하였기에, 4번을 입력하면 해당유저가 없다고 표시된다.
DummyControllTest
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는 html파일이 아니라, data를 리턴해주는 controller
@RestController //페이지로 응답할게 아니라 데이터 응답시
public class DummyControllerTest {
@Autowired // 의존성주입(=DI)
private UserRepository userRepository;
//{id} 주소로 파라미터를 전달 받을 수 있음
// http://localhost:8081/blog/dummy/user/3
// get방식은 postman방식을 이용하지 않아도 가능하다.
@GetMapping("dummy/user/{id}")
public User detail(@PathVariable int id) {
//findbyid가 optional인 이유
// 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);
}
});
// 요청 : 웹브라우저
// user 객체는 = 자바 오브젝트
// 변환 (웹브라우저가 이해할 수 있는 데이터) --> json
// 스프링부트 = MessageConverter라는 애가 응답시 자동으로 작동한다.
// 만약에 자바 오브젝트를 리턴하게 되면 MessageConveter가 Jackon 라이브러리를 호출해서
// user 오브젝트를 json으로 변환해서 브라우저에게 던져준다.
return user;
}
//람다식으로 표현한다면 좀더 간단하게 표현할 수 있다
/*
User user = userRepository.findById(id).orElseThrow(()->{
return new IllegalArgumentException("해당 유저는 없습니다 id : " + id);
});
return user;
}
*/
//http://localhost8081/blog/dummy/join(요청) --> request
//http의 body에 username, password, email데이터를 가지고 요청
@PostMapping("/dummy/join") // insert 문이니까 post방식
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"회원가입이 완료되엇습니다.";
}
}
728x90
반응형
LIST
'Spring > Spring 블로그만들기' 카테고리의 다른 글
[Springboot] 나만의 블로그 만들기 - 14. 전체 select 및 paging 테스트 (0) | 2022.03.21 |
---|---|
[Springboot] 나만의 블로그 만들기 - 12. 회원가입 위한 insert, enum 사용법 (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 11. 연관관계의 주인 (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 10. 테이블 생성(User, Board, Reply) (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 9. yml설정하기 (0) | 2022.03.21 |