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 |
댓글