當配置mybatis返回int類型時
select id="getUserIdByName" parameterType="string" resultType="int"> SELECT id FROM user WHERE userName = #{userName} </select>
會報錯如下:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Mapper method 'com.bill.springMybatis.dao.UserDao.getUserIdByName attempted to return null from a method with
a primitive return type (int).
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
解決方案,返回類型設置為封裝類型Integer而不是基本類型int
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.bill.springMybatis.dao.UserDao"> <cache /> <select id="getUserIdByName" parameterType="string" resultType="Integer"> SELECT id FROM user WHERE userName = #{userName} </select> </mapper>
service層如果需要int數據類型,可以自動從Integer進行轉換, 當然有可能加入一些判斷,比如Integer為Null,賦給int可以先轉成0
工程源碼:
http://download.csdn.net/detail/sundongsdu/5851343