@Entity
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Getter
public class Member {
@Id
@GeneratedValue
private Long id;
@Column
private String email;
@Column
private String password;
}
2) MemberForm
@AllArgsConstructor
@ToString
public class MemberForm {
private Long id;
private String email;
private String password;
public Member toEntity() {
return new Member(id, email, password);
}
}
@Controller
public class MemberController {
@Autowired
private MemberRepository memberRepository;
@GetMapping("/member/new")
public String newMemberForm() {
return "member/new";
}
@GetMapping("/signup")
public String signUpPage() {
return "member/new";
}
@PostMapping("/member/create")
public String memberCreate(MemberForm memberForm) {
Member member = memberForm.toEntity();
Member saved = memberRepository.save(member);
return "redirect:/member/" + saved.getId();
}
@GetMapping("/member/{id}")
public String show(@PathVariable Long id, Model model) {
Member member = memberRepository.findById(id).orElse(null);
model.addAttribute("member", member);
return "member/show";
}
@GetMapping("/member")
public String index(Model model) {
List<Member> member = memberRepository.findAll();
model.addAttribute("member", member);
return "member/index";
}
@GetMapping("/member/{id}/edit")
public String edit(@PathVariable Long id, Model model) {
Member memberEntity = memberRepository.findById(id).orElse(null);
model.addAttribute("member", memberEntity);
return "member/edit";
}
@PostMapping("/member/update")
public String update(MemberForm form) {
Member memberEntity = form.toEntity();
Member target = memberRepository.findById(memberEntity.getId()).orElse(null);
if(target != null) {
memberRepository.save(memberEntity);
}
return "redirect:/member/" + memberEntity.getId();
}
@GetMapping("/member/{id}/delete")
public String delete(@PathVariable Long id,
RedirectAttributes rttr, Model model) {
Member target = memberRepository.findById(id).orElse(null);
if(target != null) {
memberRepository.delete(target);
rttr.addFlashAttribute("msg","삭제");
}
return "redirect:/member";
}
}
2. jsp
화면처리도 Article과 동일하게 구성하여 컨트롤러에 맞게 내용을 수정합니다.
동일한 방식으로 crud 가 동작하며, Member 테이블에 등록된 데이터를 Json 형태로 조회할 수 있도록 다음 작업을 진행합니다.
3. RestController
1) 코드 작성
@RestController
public class MemberApiController {
@Autowired
private MemberRepository memberRepository;
@GetMapping("/api/member")
@CrossOrigin
public List<Member> index() {
return memberRepository.findAll();
}
@GetMapping("/api/member/{id}")
@CrossOrigin
public Member show(@PathVariable Long id) {
return memberRepository.findById(id).orElse(null);
}
}