// DAO Interface
Boolean loginConfirm(String id, String pwd);
// Service Class
public boolean loginConfirm(String id, String pwd) {
return memberDao.loginConfirm(id, pwd);
}
// Mapper
<select id="loginConfirm" resultType="Boolean">
select
decode(count(*),1,'true','false') as loginResult from universe_mem
where id=#{id} and pwd=#{pwd}
</select>
해당 코드로 Junit Test를 돌렸는데 계속해서 해결되지 않는 오류가 발생😂
오류의 내용은 다음과 같았다.
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException:
Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]
id 파라미터 값은 잘 불러오는 것을 확인하였고, 어떤 부분이 잘못되었는지 못 찾다가
DAO Interface에서 2개 이상의 객체는 구분하지 못한다는 것을 알게되었다.
그렇기 때문에 @Param 어노테이션으로 id값과 pwd값을 구분해주어야 올바르게 찾을 수 있었다.
그런데 해당 오류를 해결하고나니 다시 마주하게 된 또 다른 오류...😥
org.springframework.jdbc.UncategorizedSQLException:
Error attempting to get column 'LOGINRESULT' from result set. Cause:
java.sql.SQLException: 내부 표기로 변환할 수 없습니다
결론부터 이야기하자면 Boolean 타입이 아닌 String 타입으로 결과를 받아와서
Service, 또는 Controller에서 Boolean 타입으로 변환을 해주어야 해결되는 오류였다.
// DAO Interface
String loginConfirm(@Param("id") String id, @Param("pwd") String pwd);
// Service Class
public boolean loginConfirm(String id, String pwd) {
String loginConfirm = memberDAO.loginConfirm(id, pwd);
Boolean loginResult = Boolean.parseBoolean(loginConfirm);
return loginResult;
}
// Mapper
<select id="loginConfirm" resultType="String">
select
decode(count(*),1,'true','false') as loginResult from universe_mem
where id=#{id} and pwd=#{pwd}
</select>
2개 이상의 객체를 파라미터로 받는 경우 @Param 어노테이션으로 구분해주고,
Database에서의 SQL문 결과값을 String으로 받아 Boolean으로 타입을 변환해주면
오류없이 원하는 결과를 얻을 수 있는 것을 확인하였다☺
기본적으로 알고 있어야 할 부분에서 놓쳤던 내용으로 인해 오류가 발생했던 부분이라
다시 한 번 기억하기 위해서 기록하는 오늘의 오류 해결 과정이었습니다~~~!
'Project > My only universe(Spring framework)' 카테고리의 다른 글
BootStrap을 활용한 navbar에서 menu 글자 위치 조정하기(중앙, 우측 정렬) (0) | 2023.03.28 |
---|---|
JSON 형태의 데이터 반환, @ResponseBody, @RequestBody 어노테이션 (0) | 2023.03.28 |
[3월 4주 차] 프로젝트 시작 후 24일째, 진행 상황 중간 점검 (0) | 2023.03.22 |
My Only Universe 소개 🚀 (0) | 2023.03.21 |
[Error] database에서 데이터 송신 시 타입 변환 오류 발생 및 해결 (0) | 2023.03.21 |