seong

이력서 - 채용공고 상세보기 본문

이력관리사이트

이력서 - 채용공고 상세보기

hyeonseong 2022. 11. 14. 00:03

회사 정보 보기와 거의 동일하다.  DB에서 잘 가져오면 뒤는 간단하다

1. DB에서 여러 테이블 join

채용 공고는 어떠한 회사가 있어야 작성이 가능하다, 채용 공고에서 보여지는 회사 정보는 절대 null이 될 수 없다. 그러므로 company와는 outer_join 을 사용했다.

			SELECT 
		jpb.job_posting_board_id,
		jpb.company_id,
		jpb.job_posting_board_category_id,
		jpb.job_posting_board_career_id,
		jpb.job_posting_board_title ,
		jpb.job_posting_board_content,
		jpb.job_posting_salary,
		jpb.job_posting_board_place,
		jpb.job_posting_board_deadline,
		c.category_id,
		c.category_frontend,
		c.category_backend,
		c.category_devops,
		cr.one_year_less,
		cr.two_year_over,
		cr.three_year_over,
		cr.five_year_over,
		cr.career_id,
		cp.company_picture,
		cp.company_name,
		cp.company_email,
		cp.company_phone_number
		FROM job_posting_board jpb
		LEFT OUTER JOIN company cp
		ON jpb.company_id = cp.company_id
		INNER JOIN category c
		ON jpb.job_posting_board_category_id = c.category_id
		INNER JOIN career cr
		ON jpb.job_posting_board_career_id = cr.career_id
		WHERE jpb.job_posting_board_id =  1;

2. Dto로 받아오기

모든 엔티티를 넣어주었다. 

그리고 현재 DB에는 2022 아래 처럼 저장된다.

이력서 관리 사이트에서는 "2022년 11월 13일" 처럼 나와야 하기 때문에 Timestamp를 Service에서 변경해 formatDeadLine으로 받았다.

	// 채용공고 상세 보기
	public JobPostingBoardDetailDto jobPostingOne(Integer jobPostingBoardId) {
		JobPostingBoardDetailDto jobPostingPS = jobPostingBoardDao.findByDetail(jobPostingBoardId);
		Timestamp ts = jobPostingPS.getJobPostingBoardDeadline();
		Date date = new Date();
		date.setTime(ts.getTime());
		String formattedDate = new SimpleDateFormat("yyyy년MM월dd일").format(date);
		jobPostingPS.setFormatDeadLine(formattedDate);
		return jobPostingPS;
	}

- Dto

@Getter
@Setter
public class JobPostingBoardDetailDto {

	// postingBoard 테이블
	private Integer jobPostingBoardId;
	private Integer companyId;
	private Integer jobPostingBoardCategoryId;
	private Integer jobPostingBoardCareerId;
	private String jobPostingBoardTitle;
	private String jobPostingBoardContent;
	private Integer jobPostingSalary;
	private String jobPostingBoardPlace;
	private String jobPostingBoardPicture;
	private Timestamp jobPostingBoardDeadline;

	// Category테이블
	private Boolean categoryFrontend;
	private Boolean categoryBackend;
	private Boolean categoryDevops;

	// Career테이블
	private Boolean oneYearLess;
	private Boolean twoYearOver;
	private Boolean threeYearOver;
	private Boolean fiveYearOver;
	// company테이블
	private String companyPicture;
	private String companyName;
	private String companyEmail;
	private String companyPhoneNumber;
	// company_like 테이블
	private Integer companyLikeId;
	// TimeStamp > String
	private String formatDeadLine;

	// ID
	private Integer categoryId;
	private Integer careerId;

}