- Member_ 조회, 생성, 수정, 삭제
- Member 엔티티
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String userName; //로그인 ID
@Column
private String name;
@Column
private Integer age;
@Column
private String phoneNum;
@Column
private String password;
public void patch(Member member) {
if (member.userName != null) {
this.userName = member.userName;
}
if (member.name != null) {
this.name = member.name;
}
if (member.age != null) {
this.age = member.age;
}
if (member.phoneNum != null) {
this.phoneNum = member.phoneNum;
}
if (member.password != null) {
this.password = member.password;
}
}
}
- MemberRepository
public interface MemberRepository extends JpaRepository<Member, Long> {
}
- MemberDto
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Setter
public class MemberDto {
private Long id;
private String userName;
private String name;
private Integer age;
private String phoneNum;
private String password;
public Member toEntity() {
return new Member(id, userName, name, age, phoneNum, password);
}
}
- Member 더미데이터 (data.sql)
--product 더미데이터
INSERT INTO product(id, name, price, category) VALUES (1, '에스프레소', 4000, '커피');
INSERT INTO product(id, name, price, category) VALUES (2, '아메리카노', 4500, '커피');
INSERT INTO product(id, name, price, category) VALUES (3, '라떼', 4800, '커피');
INSERT INTO product(id, name, price, category) VALUES (4, '아이스티', 3800, 'Non 커피');
INSERT INTO product(id, name, price, category) VALUES (5, '우유', 2000, 'Non 커피');
--member 더미데이터
INSERT INTO member(id, user_name, name, age, phone_num, password) VALUES (1,'aaa', '김일번', 26, '01012345678', 'a123');
INSERT INTO member(id, user_name, name, age, phone_num, password) VALUES (2, 'bbb', '문이번', 23, '01043218765', 'b123');
INSERT INTO member(id, user_name, name, age, phone_num, password) VALUES (3, 'bbb', '박삼번', 29, '01056781234', 'c123');
- MemberAPIController
@Slf4j
@RestController
public class MemberAPIController {
@Autowired
private MemberService memberService;
//모든 회원 조회
@GetMapping("/api/members")
public List<Member> list() {
return memberService.list();
}
//회원 등록
@PostMapping("/api/members")
public ResponseEntity<Member> create(@RequestBody MemberDto dto) {
Member created = memberService.create(dto);
return (created != null) ?
ResponseEntity.status(HttpStatus.OK).body(created) :
ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
//회원 수정
@PatchMapping("/api/members/{id}")
public ResponseEntity<Member> update(@PathVariable Long id, @RequestBody MemberDto dto) {
Member updated = memberService.update(id, dto);
return (updated != null) ?
ResponseEntity.status(HttpStatus.OK).body(updated) :
ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
//회원 삭제
@DeleteMapping("/api/members/{id}")
public ResponseEntity<Member> delete(@PathVariable Long id) {
Member deleted = memberService.delete(id);
return (deleted != null) ?
ResponseEntity.status(HttpStatus.OK).build() :
ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
}
- MemberService
@Slf4j
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
//회원 조회
public List<Member> list() {
return memberRepository.findAll();
}
//회원 등록
@Transactional
public Member create(MemberDto dto) {
Member member = dto.toEntity();
if (member.getId() != null) {
return null;
}
return memberRepository.save(member);
}
//회원 수정
@Transactional
public Member update(Long id, MemberDto dto) {
Member member = dto.toEntity();
log.info("id: {}, member: {}", id, member.toString());
Member target = memberRepository.findById(id).orElse(null);
if (target == null || id != member.getId()){
log.info("잘못된 요청");
return null;
}
target.patch(member);
Member updated = memberRepository.save(target);
return updated;
}
//회원 삭제
@Transactional
public Member delete(Long id) {
Member target = memberRepository.findById(id).orElse(null);
if (target == null) {
return null;
}
memberRepository.delete(target);
return target;
}
}
- 회원 조회
- 회원 생성
- 회원 수정
- 회원삭제
GitHub - Pearlmoon997/CoffeeShop: CoffeeShop
CoffeeShop. Contribute to Pearlmoon997/CoffeeShop development by creating an account on GitHub.
github.com
'프로젝트_ 커피주문 서비스' 카테고리의 다른 글
OrderDate 삽입 (0) | 2022.06.20 |
---|---|
시간 등록을 위한 JPA Auditing 테스트 (0) | 2022.06.18 |
Product_ Update, Delete (API Controller) (0) | 2022.06.15 |
Product_ Create, Read (API Controller) (0) | 2022.06.14 |
도메인, 엔티티, 테이블 설계 (0) | 2022.06.13 |