인생 디벨로퍼

개인정보 insert (form) 본문

Project/Mini Project - Rodonin (구인구직)

개인정보 insert (form)

뫄뫙뫄 2023. 3. 6. 20:34
728x90

먼저, 테이블 관계를 정리해야했다..


Controller

    @PostMapping("/employee/save")
    public String save(EmployeeGraduate employeeGraduate, EmployeeCareer employeeCareer,
            EmployeeLicense employeeLicense, EmployeeStack employeeStack) {

        Employee principal = MySession.MyPrincipal(session);

        if (principal == null) {
            throw new CustomException("인증이 되지 않았습니다", HttpStatus.UNAUTHORIZED);
        }

        employeeService.개인정보추가(employeeGraduate, employeeCareer, employeeLicense, employeeStack, principal.getId());
        if (employeeCareer.getCareerStart().toString().equals("0001-01-01")) {
            employeeCareer.setCareerStart(null);
        }
        if (employeeCareer.getCareerEnd().toString().equals("0001-01-01")) {
            employeeCareer.setCareerEnd(null);
        }

        return "redirect:/employee/detail";
    }

Service

@Transactional
    public void 개인정보추가(EmployeeGraduate employeeGraduate, EmployeeCareer employeeCareer,
            EmployeeLicense employeeLicense, EmployeeStack employeeStack, int principalId) {
        if (employeeGraduate.getSchoolId() != 0) {
            int result = employeeGraduateRepository.insert(employeeGraduate, principalId);
            if (result != 1) {
                throw new CustomException("최종학력 추가 실패", HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }

        if (!employeeCareer.getCareerCompany().equals("") || employeeCareer.getCareerCompany() == null) {
            int result2 = employeeCareerRepository.insert(employeeCareer, principalId);
            if (result2 != 1) {
                throw new CustomException("경력 추가 실패", HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }

        if (employeeLicense.getLicenseId() != 0) {
            int result3 = employeeLicenseRepository.insert(employeeLicense, principalId);
            if (result3 != 1) {
                throw new CustomException("자격증 추가 실패", HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }
        if (employeeStack.getStackId() != 0) {
            int result4 = employeeStackRepository.insert(employeeStack, principalId);
            if (result4 != 1) {
                throw new CustomException("기술스택 추가 실패", HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }

    }

employeeGraduate, employeeCareer, employeeLicense, employeeStack 은 null 값을 허용하기 때문에,

값이 입력되지 않은경우, 공백이 insert 되는 상황이 발생했다.

아무 값도 입력 하지 않을 때, 기본 value 값을 0으로 설정,

Service if 문을 사용해,  0이 아닌 경우에만 insert 가 실행 되도록 하였다.

값을 입력한 경력 부분을 제외하고는, insert  가 실행되지 않는걸 확인!


Repository

각각의 Repository 에 insert 해줘야한다.


.xml


.jsp


결과

 

728x90