본문 바로가기

Spring 3.0 - 4.3

[에러] MyBatis - selectOne으로 가지고 올 때 result가 null인 경우 처리 방법

문제원인

매퍼에 resultType = int 로 되어 있었고 DAO 에서 그 null값을 return해주려 하니깐

아예 서비스단으로 return 자체가 되지도 못했다.

 

 

아래가 문제의 코드다. 쿼리절에서 해당 조건에 만족하는 데이터가 없어서 NULL을 반환하는 상태이다.

 

mapper.xml

<select id="getPreRank" resultType="int" parameterType="com.exe.domain.Chart">
      SELECT
            RANK
        FROM   CHART  
       WHERE SITE_NAME = #{siteName, jdbcType=VARCHAR}
   </select>

 

DAO.java

 public int getPreRank(Chart chart){ 
        return sessionTemplate.selectOne("sourcemapper.getPreRank",chart);
     
    }

 

 

 

해결법 - null을 받아들일 수 있는 객체타입으로 바꿔준다. int → Integer 

 

mapper.xml

<select id="getPreRank" resultType="Integer" parameterType="com.exe.domain.Chart">
      SELECT
            RANK
        FROM   CHART  
       WHERE SITE_NAME = #{siteName, jdbcType=VARCHAR}
   </select>

 

DAO.java

 public Integer getPreRank(Chart chart){ 
        return sessionTemplate.selectOne("sourcemapper.getPreRank",chart);
     
    }