깽쟈
491
2015-07-14 15:42:12
3
5085

마이바티스에서 selectOne으로 알아온 int의 값이 null 일 때


select로 알아온 값이 없을 경우 -1을 반환하게 만든 함수가 있습니다. 이걸 마이바티스용으로 변환중인데요. int 타입에서 문제가 발생하고 있습니다. 대충 코딩해보자면...


dao.java

public int getNumber(Object obj) {

  return sessionFactory.openSession.selectOne(namespace + ".getNumber", arg);

}


mapper.xml

<select id="getNumber" resultType="int">

  SELECT id FROM table WHERE codition=arg;

</select>


db의 SELECT 결과가 없을 경우 null이 던져지면서 dao.java에서 NullPointException이 발생합니다. 그래서 resultType을 Integer로, 함수의 반환타입을 Integer로 하고 난 뒤, Dao를 호출했던 Service에서 null 값을 가지고, 어쩌구 저쩌구 요리할 수가 있게 되었는데요.


다른 분들도 이렇게 Integer 객체를 사용하시는지요? 검색해보니까 iBatis에서는 resultMap에서 nullValue 속성을 이용하는 것도 같은데... 마이바티스 매뉴얼에는 nullValue가 없더라구요. 이런 경우에는 보통 실무에서는 어떻게 처리하시는지...





0
  • 답변 3

  • 레버리지
    2k
    2015-07-14 15:43:56


    SELECT NVL ( MAX(id), -1 ) FROM table WHERE codition=arg;


  • 깽쟈
    491
    2015-07-14 15:55:12
    db에서 처리해버리는군요 ㅇ_ㅇ; 감사합니다.
  • dkswksi
    384
    2015-07-14 17:29:25

    mysql에서 nvl 이있나요


    coalesce나 ifnull 사용하는 걸로 아는데

  • 로그인을 하시면 답변을 등록할 수 있습니다.