Paper.Yellow

이력서 등록 페이지 구현 1 본문

프로젝트/구인구직구현 mini 프로젝트

이력서 등록 페이지 구현 1

Paper.Y 2022. 10. 12. 15:33

깃헙 주소

 

HJH/이력서등록 컨트롤러까지 구현 완료 · LegdayDev/miniproject1@59410df

Show file tree Showing 8 changed files with 98 additions and 4 deletions.

github.com

 

src/main/java/site/metacoding/miniproject/domain/person_skill/PersonSkillDao

public interface PersonSkillDao {
	public void insert(PersonSkill personSkill);

	public PersonSkill findById(Integer personSkillId);

	public List<PersonSkill> findAll();

	public void update(PersonSkill personSkill); // dto생각

	public void deleteById(Integer personSkillId);

	public List<PersonSkill> findByPersonId(Integer personId);
}

 

src/main/java/site/metacoding/miniproject/domain/resume/Resume

import java.sql.Timestamp;

import lombok.Getter;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Getter
public class Resume {
	private Integer resumeId;
	private Integer personId;
	private String resumeTitle;
	private String photo;
	private String introduction;
	private String myCloud;
	private Timestamp createdAt;

	public Resume(Integer personId, String resumeTitle, String photo, String introduction, String myCloud) {
		this.personId = personId;
		this.resumeTitle = resumeTitle;
		this.photo = photo;
		this.introduction = introduction;
		this.myCloud = myCloud;
	}

}

public Resume 생성자 추가 

 

src/main/java/site/metacoding/miniproject/service/PersonService

@RequiredArgsConstructor
@Service
public class PersonService {

	private final PersonDao personDao;
	private final UserDao userDao;
	private final ResumeDao resumeDao;
	private final PersonSkillDao personSkillDao;

	public void 회원가입(PersonJoinDto personJoinDto) {
		userDao.insert(personJoinDto.toUser());
		User userPS = userDao.findByUsername(personJoinDto.getUsername());
		personDao.insert(personJoinDto.toPerson(userPS.getUserId()));
	}

	public ResumeFormDto 이력서내용가져오기(Integer personId) {
		Person person = personDao.findById(personId);
		ResumeFormDto resumeFormDto = new ResumeFormDto(person.getPersonName(), person.getPersonEmail(),
				person.getDegree(),
				personSkillDao.findByPersonId(personId));
		return resumeFormDto;

	}

	public void 이력서등록(ResumeWriteDto resumeWriteDto, Integer personId) {
		resumeDao.insert(resumeWriteDto.toEntity(personId));
	}

}

이력서 등록 페이지에 가져올 데이터 뿌리기 위해서 이력서내용가져오기 / 등록을 위한 이력서 등록 

 

src/main/java/site/metacoding/miniproject/web/PersonController

@RequiredArgsConstructor
@Controller
public class PersonController {
	private final PersonService personService;
	private final UserService userService;

	@GetMapping("/person/resumeWrite/{id}")
	public String resumeForm(@PathVariable Integer personId, Model model) {
		ResumeFormDto personPS = personService.이력서내용가져오기(personId);
		model.addAttribute("person", personPS);
		return "person/resumeWriteForm";
	}

	@PostMapping("/save/resume/{id}")
	public @ResponseBody CMRespDto<?> resumeWrite(@RequestBody ResumeWriteDto resumeWriteDto,
			@PathVariable Integer personId) {
		personService.이력서등록(resumeWriteDto, personId);
		return new CMRespDto<>(1, "이력서 등록 성공", null);
	}

}

 

src/main/java/site/metacoding/miniproject/web/dto/request/ResumeWriteDto

@Getter
@Setter
public class ResumeWriteDto {
    private String resumeTitle;
    private String photo;
    private String myCloud;
    private String introduction;

    public Resume toEntity(Integer personId) {
        return new Resume(personId, this.resumeTitle, this.photo, this.introduction, this.myCloud);
    }
}

 

ResumeDao(Resume) 값을 받기 위해서 엔티티 생성

 

src/main/java/site/metacoding/miniproject/web/dto/response/ResumeFormDto

@Getter
@AllArgsConstructor
public class ResumeFormDto {
    private String personName;
    private String personEmail;
    private String degree;
    private List<PersonSkill> personSkillList;

}

src/main/resources/mapper/person_skill.xml

<select id="findByPersonId" resultType="site.metacoding.miniproject.domain.person_skill.PersonSkill">
    SELECT *
    FROM Person_Skill
    WHERE person_Id = #{personId}
 </select>

person_id로 검색 후 가지고 있는 모든 스킬을 가져오기 위해서 명령문 생성

 

src/main/resources/mapper/resume.xml

  <insert id="insert">
    INSERT INTO resume(person_id, photo, introduction, my_cloud, created_At )
    VALUE(#{personId}, #{photo}, #{introduction}, #{myCloud}, now())
    
    >>>>INSERT INTO resume(person_id, resumeTitle, photo, introduction, my_cloud, created_At )
    VALUE( #{personId}, #{resumeTitle}, #{photo}, #{introduction}, #{myCloud}, now())
  </insert>

처음엔 타이틀의 값을 받는 형식의 시안이 아니었다가 변경되어 명령문 변경