앞서 우리는 한 인물의 경력년차를 계산해봤다.
https://standout.tistory.com/1238
우선 작업 시작전, 아래와같이 등급요건을 정해봤다.
등급요건 (4년제 대학 졸업 및 기사 자격증 소지시 등급 +1)초급중급고급특급
5년 이하 |
5년 초과 10년 이하 |
10년 초과 15년 이하 |
15년 이상 |
이 동작은 등록/수정시 모두 함께 실행되도록한다.
public void insertCoHistory(List<MpVO.CoHistory> coHistoryList, int empId) {
for (MpVO.CoHistory coHistory : coHistoryList) {
System.out.println("coHistory! -> for문으로 출력했습니다 "+coHistory + "이건 아이디" + empId);
mpMapper.insertCoHistory(coHistory, empId);
}
mpMapper.updateExpYears(empId);
mpMapper.updateExpGrade(empId);
}
public void updateCoHistory(List<MpVO.CoHistory> coHistoryList, int empId) {
for (MpVO.CoHistory coHistory : coHistoryList) {
System.out.println("coHistory! -> for문으로 출력했습니다 "+coHistory + "이건 아이디" + empId);
if(coHistory.getHistoryId() == 0) {
mpMapper.insertCoHistory(coHistory, empId);
}else {
mpMapper.updateCoHistory(coHistory, empId);
}
}
mpMapper.updateExpYears(empId);
mpMapper.updateExpGrade(empId);
}
EMPID값을 받아 원하는 인물의 값을 수정하며
void updateExpGrade(int empId);
해당 인물의 EXP_YEARS의 기준에 따라 0, 1, 2, 3 등으로 값을 매겨보자.
<update id="updateExpGrade" parameterType="java.util.Map">
<![CDATA[
UPDATE emp_info
SET EXP_GRADE =
CASE
WHEN CAST(EXP_YEARS AS SIGNED) <= 5 THEN 0
WHEN CAST(EXP_YEARS AS SIGNED) > 5 AND CAST(EXP_YEARS AS SIGNED) <= 10 THEN 1
WHEN CAST(EXP_YEARS AS SIGNED) > 10 AND CAST(EXP_YEARS AS SIGNED) <= 15 THEN 2
ELSE 3
END
WHERE EMP_ID = #{empId}
]]>
</update>
'JAVA' 카테고리의 다른 글
java.time패키지: 객체생성 now() of() parse()와 인터페이스, 간격을 나타내는 Period Duration (0) | 2024.01.11 |
---|---|
생일에 따른 연령계산하기 insert, update (0) | 2024.01.08 |
경력년차 계산하기 insert, update (0) | 2024.01.08 |
MessageFormat, 문자열을 정의하고 {0} index에 채워넣다 (0) | 2023.12.28 |
ChoiceFormat, limits와 grades를 설정해 등급추출하기 (0) | 2023.12.28 |