본문 바로가기
CODE/CodeKnowledge

[SQL] mybatis에서 int와 integer의 차이 (null를 오류로 반환하지 않는 것은?)

by 솔리닉__ 2023. 7. 16.
반응형

 
 
먼저 들어가기 앞서 MyBatis는 자바 객체와 SQL 데이터베이스 간의 매핑을 도와주는 ORM(Object-Relational Mapping) 프레임워크입니다. 다들 알고 계셨나요..? 알고 있었겠죠. 
 

 int VS Integer

 

<insert id="intList" resultType = "int">
	insert into ...
    <!--null 반환시 오류메세지 반환--> 
</insert>

<insert id="intList" resultType = "Integer">
   insert into ... 
   <!--null 값 가능-->
</insert>

 
MyBatis에서 int와 Integer의 차이점은 자바의 기본 데이터 타입과 래퍼 클래스의 차이와 동일합니다.
 
int는 자바의 기본 데이터 타입 중 하나입니다. int는 32비트 정수 값을 저장하며, null 값을 표현할 수 없습니다.
Integer는 int의 래퍼 클래스로, int 값을 객체로 래핑하여 처리합니다.
 
Integer 객체는 int 값을 가질 수 있지만, null 값을 가질 수도 있습니다.
 
Integer는 자바의 객체 타입이므로 null 값을 가질 수 있기 때문에, 데이터베이스의 NULL 값을 표현하거나 값이 없는 상태를 나타내는 데 유용합니다. MyBatis에서는 int와 Integer를 모두 사용할 수 있습니다.
 
MyBatis의 매개 변수로 사용하는 경우, int는 기본값이 0이고 NULL을 허용하지 않습니다.
 
Integer는 NULL 값을 허용할 수 있습니다. 따라서 매개 변수로 NULL을 전달해야 하는 경우 Integer를 사용하는 것이 더 편리합니다. 
 

결론은 null값을 반환할 일이 있을 거 같은 쿼리에서는 integer를 resultType으로 사용하면 오류를 반환하지는 않습니다. 
그게 정답은 아니라는 거고, 오류로 반환할 때 이런 경우때문이라는 걸 참고하셨으면 좋겠습니다! 

 

반응형

댓글