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