본문 바로가기

프로젝트_ 커피주문 서비스

Member_ CRUD (API Controller)

  • 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