👉 공공데이터포털 전국 병원 정보 TSV 111918건의 데이터 사용
구분 | SpringMVC | RestAPI |
---|---|---|
Controller | @Controller | @RestController |
Return | view path | Json |
@ToString
@Getter
@Entity
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "nation_wide_hospitals")
public class Hospital {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "open_service_name")
private String openServiceName; //개방서비스명
@Column(name = "open_local_government_code") //개방자치단체코드
private int openLocalGovernmentCode;
@Column(name = "management_number") //관리번호
private String managementNumber;
@Column(name = "license_date")
private LocalDateTime LicenseDate; //인허가일자
@Column(name = "business_status")
private int businessStatus; //1: 영업/정상 2: 휴업 3: 폐업 4: 취소/말소영업상태구분
@Column(name = "business_status_code")
private int businessStatusCode; //영업상태코드 2: 휴업 3: 폐업 13: 영업중
@Column(name = "phone")
private String phone; // 소재지전화
@Column(name = "full_address")
private String fullAddress; //소재지전체주소
@Column(name = "road_name_address")
private String roadNameAddress; //도로명전체주소
@Column(name = "hospital_name")
private String hospitalName; //사업장명(병원이름)
@Column(name = "business_type_name")
private String businessTypeName; //업태구분명
@Column(name = "healthcare_provider_cnt")
private int healthcareProviderCnt; //의료인수
@Column(name = "patient_room_cnt")
private int patientRoomCnt; //입원실수
@Column(name = "total_number_of_beds")
private int totalNumberOfBeds; //병상 수
@Column(name = "total_area_size")
private float totalAreaSize; //총면적
}
findAllByHospitalNameContaining
orselect *
from nation_wide_hospitals
where hospital_name like '%서울%';
List<HospitalResponse> responseList = findHospitalName
.stream()
.map(h -> HospitalFactory.toHospitalResponse(h))
.collect(Collectors.toList());
링크
public static HospitalResponse toHospitalResponse(Hospital hospital) {
HospitalResponse hospitalResponse = HospitalResponse.builder()
.id(hospital.getId())
.hospitalName(hospital.getHospitalName())
.patientRoomCnt(hospital.getPatientRoomCnt())
.totalNumberOfBeds(hospital.getTotalNumberOfBeds())
.businessStatus(setBusinessStatusName(hospital.getBusinessStatusCode()))
.businessTypeName(hospital.getBusinessTypeName())
.build();
return hospitalResponse;
}
private static String setBusinessStatusName(int businessStatusCode) {
if (businessStatusCode == 13) {
return "영업중";
} else if (businessStatusCode == 3) {
return "폐업";
} else {
return String.valueOf(businessStatusCode);
}
}
WebMvcTest : 해당 클래스 지정하여 테스트 진행
MockMvc / MockBean : service
Mockito : given, verify
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
👉 게시판 CRUD API
게시판 | RestAPI | |
---|---|---|
기능 | @Controller | @RestController |
Return | view path | Json |
Users API
- RestController
- Json 반환
DB에 사용자 중복 여부 확인 후 없으면 저장
있으면 username, "이미 존재하는 회원입니다" 메세지를 Json형태로 반환해준다
public UserResponse join(UserJoinRequest userJoinRequest) {
Optional<Users> findUser = userJpaRepository.findByUsername(userJoinRequest.getUsername());
if (findUser.isEmpty()) {
Users saveUser = userJpaRepository.save(UsersFactory.toUsers(userJoinRequest)); //Entity 변환 후 저장
return UsersFactory.toUserJoinResponse(saveUser); //ResponseDto 변환
}
return joinFalse(userJoinRequest.getUsername());
}
private UserResponse joinFalse(String username) {
return new UserResponse(username, "이미 존재하는 아이디 입니다.");
}