HTTP Status 500
There is no setter for property named 'BIRTH' in 'class com.spring.job.vo.RecruitVo' Description The server encountered an unexpected condition that prevented it from fulfilling the request.
이렇게 분명 Vo파일에 Getter, Setter 코드를 넣었는데도 불구하고 없다고 뜬다면??
public class RecruitVo {
private String seq;
private String name;
private String birth;
public String getSeq() {
return seq;
}
public void setSeq(String seq) {
this.seq = seq;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}
이렇게 계속 저장하고 또 빌드 다시 해도 뜨길래
검색해 보니
MyBatis는 기본적으로 SQL에서 사용하는 필드 이름과 Java 객체의 필드 이름을 대소문자를 구분하지 않고 매핑하려고 합니다. 하지만 Java에서는 필드와 메서드 이름이 대소문자를 구분하기 때문에, MyBatis가 데이터베이스의 BIRTH라는 컬럼을 Java의 birth 필드와 연결하려 할 때 일치하지 않아 이런 오류가 발생한 것입니다.즉, MyBatis는 SQL 쿼리에서 사용하는 필드 이름을 대소문자 구분 없이 처리하려 하지만, Java에서는 birth와 BIRTH가 다른 것으로 인식되기 때문에, 일치하는 setter 메서드를 찾지 못해 ReflectionException이 발생한 것입니다.
그래서 나는 VO파일의 코드를 이렇게 수정함
public void setBIRTH(String BIRTH) {
this.birth = BIRTH;
}
그냥 받아오는 값을 대문자로 바꿔 주니 됨..............
위의 설명에서도 말했다 시피 이건 데이터베이스와 java코드의 매핑 문제라 코드를 바꾸기 싫다 하는 분들은 디비의 컬럼명을 java의 코드에 맞게 대소문자 바꾸는것도 방법임

※ 추가
나~~~~ 중에 xml파일에서 내가 잘못 적은 것을 알게 됨.....................
<resultMap type="com.spring.job.vo.RecruitVo" id="RecruitVo">
<result property="seq" column="SEQ" />
<result property="name" column="NAME" />
<result property="BIRTH" column="birth" />
birth의 대문자와 소문자를 바꿔서 적었었음...................... 나 증말로 미춰버려
여러분도 혹시 다른건 다 에러안났는데 어느 하나만 getter, setter에러가 난다면 xml파일의 resultMap을 잘 살펴 보시길............