저번 포스팅에 이어서 Service를 만들어 보겠습니다.
https://jisaydeveloper.tistory.com/32
[Spring Boot] 환자 관리 프로그램 - Entity, Repository (2)
저번 포스팅에 이어서 Entity와 Repository를 만들어 보겠습니다. https://jisaydeveloper.tistory.com/31 [Spring Boot] 환자 관리 프로그램 - 설정 (1) 게시판 연습할겸 환자 관리 프로그램을 만들어 보겠습니다. dep
jisaydeveloper.tistory.com
이번 편은 메서드 단위로 끊어서 설명하겠습니다.
MisayService
@Service
@RequiredArgsConstructor
public class MisayService {
private final MisayRepository misayRepository;
private final MemberRepository memberRepository;
}
JPA 사용하기 위해서 repository를 final로 선언하면 @RequiredArgsConstructor가 초기화를 해줍니다.
getList()
public List getList(){
List<MisayDTO> result = new ArrayList<>(); // 검색 결과를 저장할 리스트
List<Misay> misay = misayRepository.findAll();
for(Misay list : misay){
Member member = list.getMember();
MisayDTO dto = MisayDTO.builder()
.bno(list.getBno())
.name(member.getName())
.age(member.getAge())
.surgeryDate(list.getSurgeryDate())
.surgeryName(list.getSurgeryName())
.surgeryArea(list.getSurgeryArea())
.rehab(list.getRehab())
.rehabDate(list.getRehabDate())
.memo(list.getMemo())
.build();
result.add(dto);
}
return result;
}
findAll() 메서드를 통해서 Misay의 모든 엔티티를 가져온 후 dto를 통해서 parsing 후 List<MisayDTO>를 리턴합니다.
getCategory(), getSurgery(), getName()
public List<MisayDTO> getCategory(String value){
List<MisayDTO> result = new ArrayList<>();
List<Misay> misay = misayRepository.findBySurgeryArea(value);
for(Misay list : misay){
Member member = list.getMember();
MisayDTO dto = MisayDTO.builder()
.bno(list.getBno())
.name(member.getName())
.age(member.getAge())
.surgeryDate(list.getSurgeryDate())
.surgeryName(list.getSurgeryName())
.surgeryArea(list.getSurgeryArea())
.rehab(list.getRehab())
.rehabDate(list.getRehabDate())
.memo(list.getMemo())
.build();
result.add(dto);
}
return result;
}
public List<MisayDTO> getSurgery(String keyword){
List<MisayDTO> result = new ArrayList<>();
List<Misay> misay = misayRepository.findBySurgeryAreaContaining(keyword);
for(Misay list : misay){
Member member = list.getMember();
MisayDTO dto = MisayDTO.builder()
.bno(list.getBno())
.name(member.getName())
.age(member.getAge())
.surgeryDate(list.getSurgeryDate())
.surgeryName(list.getSurgeryName())
.surgeryArea(list.getSurgeryArea())
.rehab(list.getRehab())
.rehabDate(list.getRehabDate())
.memo(list.getMemo())
.build();
result.add(dto);
}
return result;
}
public List<MisayDTO> getName(String keyword){
List<MisayDTO> result = new ArrayList<>();
List<Misay> misay = misayRepository.findByMemberNameContaining(keyword);
for(Misay list : misay){
Member member = list.getMember();
MisayDTO dto = MisayDTO.builder()
.bno(list.getBno())
.name(member.getName())
.age(member.getAge())
.surgeryDate(list.getSurgeryDate())
.surgeryName(list.getSurgeryName())
.surgeryArea(list.getSurgeryArea())
.rehab(list.getRehab())
.rehabDate(list.getRehabDate())
.memo(list.getMemo())
.build();
result.add(dto);
}
return result;
}
이 메서드들은 검색 기능을 위해 사용하는 메서드 입니다.
카테고리에서 수술부위(SurgeyArea)별 List가 필요할때, 수술부위 또는 환자 이름에 따른 검색 기능을 위해 쓰입니다.
member(), getmembers(), searchMembers()
public void member(MisayDTO dto){
Member member = Member.builder().name(dto.getName()).age(dto.getAge()).build();
memberRepository.save(member);
}
public List<Member> getMembers(){
return memberRepository.findAll();
}
public List<Member> searchMembers(String keyword){
return memberRepository.findByNameContaining(keyword);
}
member()는 환자를 등록하는 메서드,
getMembers()는 모든 환자를 조회해오는 메서드,
searchMembers()는 검색하고싶은 환자를 조회하는 메서드입니다.
getMisayDTO()
public MisayDTO getMisayDTO(Long mno){
Member member = memberRepository.getOne(mno);
MisayDTO dto = MisayDTO.builder()
.mno(member.getMno())
.name(member.getName())
.age(member.getAge())
.build();
return dto;
}
Member 엔티티를 가져오면 MisayDTO로 변환하는 메서드입니다.
deleteBoard(), modify(), read(), register()
public void deleteBoard(Long bno){
Optional<Misay> misayOptional = misayRepository.findById(bno);
if (misayOptional.isPresent()) {
Misay misay = misayOptional.get();
misayRepository.delete(misay);
} else {
// 지정된 bno에 해당하는 Misay 엔티티가 없을 때 처리
}
}
public void modify(MisayDTO dto){
Member member = Member.builder().name(dto.getName()).build();
Misay misay = Misay.builder()
.bno(dto.getBno())
.memo(dto.getMemo())
.member(member)
.surgeryName(dto.getSurgeryName())
.surgeryDate(dto.getSurgeryDate())
.surgeryArea(dto.getSurgeryArea())
.rehabDate(dto.getRehabDate())
.rehab(dto.getRehab())
.build();
misayRepository.save(misay);
}
public MisayDTO read(Long bno){
Misay list = misayRepository.getOne(bno);
Member member = list.getMember();
MisayDTO dto = MisayDTO.builder()
.mno(member.getMno())
.name(member.getName())
.age(member.getAge())
.surgeryDate(list.getSurgeryDate())
.surgeryName(list.getSurgeryName())
.surgeryArea(list.getSurgeryArea())
.bno(list.getBno())
.rehab(list.getRehab())
.rehabDate(list.getRehabDate())
.memo(list.getMemo())
.build();
return dto;
}
public void register(MisayDTO dto){
Member member = memberRepository.getOne(dto.getMno());
Misay m = Misay.builder()
.member(member)
.bno(dto.getBno())
.rehab(dto.getRehab())
.rehabDate(dto.getRehabDate())
.surgeryArea(dto.getSurgeryArea())
.surgeryDate(dto.getSurgeryDate())
.surgeryName(dto.getSurgeryName())
.memo(dto.getMemo())
.build();
misayRepository.save(m);
}
deleteBoard()는 차트를 삭제할 때,
modify()는 차트를 수정할 때
read()는 조회할 차트를 가져올 때
register()는 차트를 등록하는 메서드입니다.
마지막은 Controller와 총평으로 돌아오겠습니다.
'Side Project' 카테고리의 다른 글
[Spring Boot] chatGPT를 활용한 AI 사이트 (4) - 기능 추가(페이징) (0) | 2023.10.22 |
---|---|
[Spring Boot] 환자 관리 프로그램 - Controller & view (4) (0) | 2023.10.20 |
[Spring Boot] 환자 관리 프로그램 - Entity, Repository (2) (0) | 2023.10.19 |
[Spring Boot] 환자 관리 프로그램 - 설정 (1) (0) | 2023.10.18 |
[Spring Boot] chatGPT를 활용한 AI 사이트 (4) - chatGPT API 사용하기 (0) | 2023.10.13 |