mybatis查询类型为int的字段,返回null的异常
来源:互联网 发布:电路图仿真软件 编辑:程序博客网 时间:2024/06/05 18:49
原文链接:http://www.cnblogs.com/dingchenghong/archive/2012/07/04/2576504.html
项目中用mybatis3.x,用sql查询某个表类型为int的字段,那个表是空表,没有数据,结果抛异常了,原因是在对象中的属性为int,空表时,sql查询出来的是NULL,结果赋值时抛异常了。
org.apache.ibatis.binding.BindingException: Mapper method 'getSort' (xx.yy.cc.DxxDAO) attempted to return null from a method with a primitive return type (int).
抛这样的异常。
解决这个问题,是当查出来为NULL时,结一个默认值,如:0。
mysql:
SELECT IFNULL(MAX(SORT),0)AS sort FROM web_d_info
oracle:
SELECT nvl(MAX(SORT),0) as sort FROM web_d_info
如果上述方法无效,请使用以下解决方案:
转:http://blog.csdn.net/just_lion/article/details/9700793
当配置mybatis返回int类型时
- select id="getUserIdByName" parameterType="string" resultType="int">
- SELECT
- id
- FROM user
- WHERE userName = #{userName}
- </select>
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>
<?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
- mybatis查询类型为int的字段,返回null的异常
- mybatis查询类型为int的字段,返回null的异常
- mybatis查询类型为int的字段,返回null的异常
- mybatis查询类型为int的字段,返回null的异常
- 使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法
- sql中查询类型为int的字段,返回null的异常
- sql中查询类型为int的字段,返回null的异常
- mybatis查询的返回类型为基础类型(int、long等),但结果为null时的异常解决
- 使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,报异常的解决方法
- mybatis查询,返回类型为HashMap,字段为null时没返回
- MyBatis查询返回Map时设置值为null的字段也在结果集中
- mybatis mysql int 返回结果为null的解决
- myBatis 返回 int 类型时,报 null 异常
- mybatis查询字段为空返回另一个字段的值
- Spring boot + MyBatis 查询返回Map时设置值为null的字段也在结果集中
- mybatis查询出来的字段的值为null,驼峰字段
- mysql字段类型为int默认null,插入却显示0的解决办法,参考php代码
- MyBatis在字段返回为null不返回字段
- QDir 翻译
- Android自定义下拉刷新
- android 反编译和代码解读
- 第二十一天【java虐我千百遍,我待java如初恋】
- matlab gui 输出百分数到edit控件
- mybatis查询类型为int的字段,返回null的异常
- EJB-01:企业级开发背景知识
- 【线段树】单点更新4
- UINavigationController介绍
- EJB-02:EJB开发流程
- Balanced Binary Tree
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- Android 4.22 与PC 单线程通信Socket
- 黑马程序员_银行业务调度系统