[DummyControllerTest] -Insert
package com.jinseong.blog.test;
@RestController
public class DummyControllerTest {
@Autowired //의존성 주입(DI) >> 메모리 할당
private MemberRepository memberRpository;
//http://localhost:8000/blog/dummy/join(요청)
//http 의 body에 username, password, email 데이터를 가지고 요청
@PostMapping("/dummy/join")
public String join(Member m) {
memberRpository.save(m);
System.out.println("id : " + m.getId());
System.out.println("username : " + m.getUsername());
System.out.println("password : " + m.getPassword());
System.out.println("email : " + m.getEmail());
System.out.println("role : " + m.getRole());
System.out.println("createDate : " + m.getCreateDate());
return "complete";
}
}
[MemberRepository]
package com.jinseong.blog.repository;
//DAO
//자동으로 bean 등록이 된다.
//@Repository 생략 가능하다.
public interface MemberRepository extends JpaRepository<Member, Integer>{
}
[POST Request]
[실행 SQL]
insert
into
Member
(id, createDate, email, password, role, username)
values
(default, ?, ?, ?, ?, ?)
[결과]
[DummyControllerTest] - Select
package com.jinseong.blog.test;
//html 파일이 아니라 data를 return
@RestController
public class DummyControllerTest {
@Autowired // 의존성 주입(DI) >> 메모리 할당
private MemberRepository memberRpository;
/* ... */
// http://localhost:8000/blog/dummy/memberAll
@GetMapping("/dummy/memberAll")
public List<Member> list(){
return memberRpository.findAll();
}
// http://localhost:8000/blog/dummy/members?page=0
// http://localhost:8000/blog/dummy/members?page=1
@GetMapping("/dummy/members")
public List<Member> pageList(@PageableDefault(size = 2, sort = "id", direction = Direction.DESC) Pageable pageable){
Page<Member> pagingMembers = memberRpository.findAll(pageable);
//content
List<Member> members = pagingMembers.getContent();
return members;
}
// http://localhost:8000/blog/dummy/member/3
// {id} 주소로 param을 전달 받을 수 있음
@GetMapping("/dummy/member/{id}")
public Member Detail(@PathVariable int id) {
/*
* http://localhost:8000/blog/dummy/member/4 을 찾으면 db에서 못찾아오게 되면 member는 null
* Optional로 member 객체를 가져와서 null 판단 .orElseThrow() 으로 exception 발생
*/
Member member = memberRpository.findById(id).orElseThrow(()->{
return new IllegalArgumentException("해당 유저는 없습니다. id :" + id);
});
/*
* Member member = memberRpository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
@Override
public IllegalArgumentException get() {
// TODO Auto-generated method stub
return new IllegalArgumentException("해당 유저는 없습니다. id :" + id);
}
});
*/
//member object = java object > json(Gson라이브러리)
//spring boot = MessageConveter가 자동으로 json으로 변환해해서 browser에게 전달
return member;
}
/* ... */
}
[DummyControllerTest] - Update
package com.jinseong.blog.test;
//html 파일이 아니라 data를 return
@RestController
public class DummyControllerTest {
@Autowired // 의존성 주입(DI) >> 메모리 할당
private MemberRepository memberRpository;
/* ... */
// save > id 정보 없으면 insert, id 정보 있으면 update
// email,password
// http://localhost:8000/blog/dummy/member/{id}
@Transactional
@PutMapping("/dummy/member/{id}")
public Member updateMember(@PathVariable int id, @RequestBody Member reqMember) {//json Data -> Java Obejct
System.out.println(id);
System.out.println(reqMember.getPassword());
System.out.println(reqMember.getEmail());
Member member = memberRpository.findById(id).orElseThrow(()->{
return new IllegalArgumentException("수정에 실패하였습니다");
});
member.setPassword(reqMember.getPassword());
member.setEmail(reqMember.getEmail());
//memberRpository.save(reqMember);
//dirty Checking
return member;
}
/* ... */
}
[DummyControllerTest] - Delete
package com.jinseong.blog.test;
//html 파일이 아니라 data를 return
@RestController
public class DummyControllerTest {
@Autowired // 의존성 주입(DI) >> 메모리 할당
private MemberRepository memberRpository;
// http://localhost:8000/blog/dummy/member/{id}
@DeleteMapping("/dummy/member/{id}")
public String deleteMember(@PathVariable int id) {
try{
memberRpository.deleteById(id);
}catch(EmptyResultDataAccessException e){
return "삭제에 실패하였습니다. 해당 id는 존재하지 않습니다";
}
return "삭제 되었습니다 id : " + id;
}
/* ... */
}
[GlobalExceptionHanddler] - 예외처리
package com.jinseong.blog.handler;
@ControllerAdvice
@RestController
public class GlobalExceptionHanddler {
@ExceptionHandler(value=Exception.class)
public String hadnleArgumentException(Exception e) {
return "<h1>" + e.getMessage() + "</h1>";
}
}
'Project > Blog' 카테고리의 다른 글
Blog - 8. Spring Security (482) | 2022.06.02 |
---|---|
Blog - 7.회원가입 / 로그인 (474) | 2022.05.30 |
Blog - 5. Model (499) | 2022.05.23 |
Blog - 4. yml setting (470) | 2022.05.23 |
Blog - 3. lombok setting (485) | 2022.05.23 |