

CompApiController
//기업 채용정보 (공고 뿌리기)
@GetMapping("/comp/jobs-info")
public ResponseEntity<?> jobsInfo() {
List<CompResponse.CompJobsInfoDTO> reqsDTO = compService.jobsInfoList();
// request.setAttribute("jobsList", jobsList);
return ResponseEntity.ok(new ApiUtil<>(reqsDTO));
}
CompResponse
//기업 채용정보창
@Data
public static class CompJobsInfoDTO {
//jobs
private Integer id;
private String title;
private String career;
private String area;
private LocalDate deadline;
//user
private Integer userId;
private String compName;
private String imgFileName;
//skill
private List<SkillDTO2> skills = new ArrayList<>();
public CompJobsInfoDTO(Jobs jobs) {
this.id = jobs.getId();
this.title = jobs.getTitle();
this.career = jobs.getCareer();
this.area = jobs.getArea();
this.deadline = jobs.getDeadline();
this.userId = jobs.getUser().getId();
this.compName = jobs.getUser().getCompName();
this.imgFileName = jobs.getUser().getImgFileName();
this.skills = jobs.getSkillList().stream().map(skill ->
new SkillDTO2(skill)).collect(Collectors.toList());
}
@Data
public class SkillDTO2 {
private String name;
public SkillDTO2(Skill skill) {
this.name = skill.getName();
}
}
}
CompService
//기업 로그인 시 보여줄 채용 공고
public List<CompResponse.CompJobsInfoDTO> jobsInfoList() {
List<Jobs> jobsList = jobsJPARepo.findAllJobsList();
return jobsList.stream().map(jobs ->
new CompResponse.CompJobsInfoDTO(jobs)).collect(Collectors.toList());
}
JobsJPARepository
@Query("select j from Jobs j join fetch j.user u left join fetch j.skillList s")
List<Jobs> findAllJobsList();
포스트맨 결과
{
"status": 200,
"msg": "성공",
"body": [
{
"id": 1,
"title": "대규모 | 백엔드 개발자 (Backend Developer)",
"career": "경력무관",
"area": "경기도",
"deadline": "2024-04-10",
"userId": 15,
"compName": "네이버",
"imgFileName": "7d7ce466-b2b0-424d-bc2b-c233d98030f6_kakao.png",
"skills": [
{
"name": "Java"
},
{
"name": "Oracle"
}
]
},
{
"id": 2,
"title": "백엔드 개발자 - Spring (경력무관)",
"career": "신입",
"area": "부산",
"deadline": "2024-05-22",
"userId": 16,
"compName": "(주)우아한형제들",
"imgFileName": "8a6fc873-37df-48d4-8756-c4bf86193552_kia.png",
"skills": [
{
"name": "Spring"
}
]
},
{
"id": 3,
"title": "프런트 엔드/백엔드 개발자 채용",
"career": "시니어(10년 이상)",
"area": "서울",
"deadline": "2024-04-09",
"userId": 15,
"compName": "네이버",
"imgFileName": "7d7ce466-b2b0-424d-bc2b-c233d98030f6_kakao.png",
"skills": [
{
"name": "HTML/CSS"
},
{
"name": "Spring"
},
{
"name": "MySql"
},
{
"name": "React"
}
]
},
{
"id": 4,
"title": "게임 개발자 채용 공고",
"career": "미들(4~8년)",
"area": "경기도",
"deadline": "2024-04-15",
"userId": 18,
"compName": "(주)엔씨소프트",
"imgFileName": "130c456d-5f28-4060-bf99-455d60f7ff63_youtube.png",
"skills": [
{
"name": "Java"
},
{
"name": "Spring"
},
{
"name": "JSP"
}
]
},
{
"id": 5,
"title": "백엔드 개발자 (Java/Kotlin)",
"career": "신입",
"area": "서울",
"deadline": "2024-05-22",
"userId": 19,
"compName": "넷마블(주)",
"imgFileName": "223af633-9908-4fff-bf1a-fbcaaf83a236_nintendo.png",
"skills": [
{
"name": "Jquery"
},
{
"name": "JSP"
},
{
"name": "Oracle"
}
]
},
{
"id": 6,
"title": "프론트엔드 개발자 (React, TypeScript)",
"career": "경력무관",
"area": "경기도",
"deadline": "2024-04-09",
"userId": 20,
"compName": "(주)카카오",
"imgFileName": "2002e31a-eaa0-4d5c-a8cc-c7dc47258daa_nexon.png",
"skills": [
{
"name": "JavaScript"
},
{
"name": "HTML/CSS"
}
]
},
{
"id": 7,
"title": "24년도 풀스택 Web 개발자 채용 공고",
"career": "신입",
"area": "부산",
"deadline": "2024-04-29",
"userId": 21,
"compName": "(주)넥슨컴퍼니",
"imgFileName": "b59207f1-ee5f-4a40-9af7-54945bb1d687_doosan.png",
"skills": [
{
"name": "Java"
},
{
"name": "Spring"
},
{
"name": "React"
}
]
},
{
"id": 8,
"title": "[경력] Frontend Engineer",
"career": "미들(4~8년)",
"area": "서울",
"deadline": "2024-04-10",
"userId": 22,
"compName": "한국닌텐도(주)",
"imgFileName": "c227570a-2df9-4969-bbb5-5c49b3700e46_netmarble.png",
"skills": [
{
"name": "Spring"
},
{
"name": "Vue.js"
},
{
"name": "React"
}
]
},
{
"id": 9,
"title": "[채용공고] 백엔드 개발자 정규직 채용",
"career": "경력무관",
"area": "서울",
"deadline": "2024-05-22",
"userId": 23,
"compName": "LG",
"imgFileName": "d9010d71-a222-478a-b4c1-ef7193ed72e8_ncsoft.png",
"skills": [
{
"name": "Java"
},
{
"name": "Spring"
}
]
}
]
}
Share article