본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2022-12-12(31day)

by elicho91 2022. 12. 12.

PersonController API 만들기


👉 Controller

더보기
@RequiredArgsConstructor
@RestController
public class PersonController {

    private final PersonService personService;
    private final PersonRepository personRepository;

    @GetMapping("/api/persons")
    public List<Person> getPersons() {
        return personRepository.findAll();
    }

    @PostMapping("/api/persons")
    public Person createPerson(@RequestBody PersonRequestDto requestDto) {
        Person person = new Person(requestDto);
        return personRepository.save(person);
    }

    @PutMapping("/api/persons/{id}")
    public Long updatePerson(@PathVariable Long id, @RequestBody PersonRequestDto requestDto) {
        return personService.update(id, requestDto);
    }

    @DeleteMapping("/api/persons/{id}")
    public Long deletePerson(@PathVariable Long id) {
        personRepository.deleteById(id);
        return id;
    }
}

 

👉 Controller

더보기
@RequiredArgsConstructor
@Service
public class PersonService {
    private final PersonRepository personRepository;

    @Transactional
    public Long update(Long id, PersonRequestDto requestDto) {
        Person person = personRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("해당 id가 존재하지 않습니다.")
        );
        person.update(requestDto);
        return person.getId();
    }
}

 

 

👉 Entity

더보기
@Getter
@NoArgsConstructor
@Entity
public class Person {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String job;

    @Column(nullable = false)
    private int age;

    @Column(nullable = false)
    private String address;

    public Person(PersonRequestDto requestDto) {
        this.name = requestDto.getName();
        this.job = requestDto.getJob();
        this.age = requestDto.getAge();
        this.address = requestDto.getAddress();
    }

    public void update(PersonRequestDto requestDto) {
        this.name = requestDto.getName();
        this.job = requestDto.getJob();
        this.age = requestDto.getAge();
        this.address = requestDto.getAddress();
    }
}

 

👉 DTO

더보기
@Getter
public class PersonRequestDto {
    private String name;
    private String job;
    private int age;
    private String address;
}

 

👉 Repository

더보기
public interface PersonRepository extends JpaRepository<Person, Long> {
}

🙋‍♂️ 소감 : 

오늘부터 스프링 숙련주차 수업을 들어야하지만...

스프링 입문주차에서 설명이 부족했던 부분을 보완하고자 실무 기초 과정을 먼저 학습하였는데

입문주차에서 부족했던 부분을 모두 기초 과정을 통해 학습할 수 있어서 좋았다.

내일부터는 숙련과정 시작하면서 부족한 내용은 기초 과정이랑 번갈아가면서 공부해야겠다.

😈 아는 내용이라고 그냥 넘어가지 않기! 😈

'❤️‍🔥TIL (Today I Learned)' 카테고리의 다른 글

[TIL] 2022-12-14(33day)  (1) 2022.12.14
[TIL] 2022-12-13(32day)  (0) 2022.12.14
[TIL] 2022-12-09(30day)  (0) 2022.12.11
[TIL] 2022-12-08(29day)  (0) 2022.12.08
[TIL] 2022-12-07(28day)  (0) 2022.12.07

댓글