Mybatis返回int或者Integer类型报错的解决办法

 更新时间:2016年12月27日 13:36:58   投稿:mrr  
这篇文章主要介绍了Mybatis返回int或者Integer类型报错的解决办法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

会报错如下:

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,都有可能出错

例如

<select id="queryPaySum" resultType="java.lang.Integer" parameterType="map" > 
  select sum(p.CASH_FEE) from PAY_INFO p 
  where 1=1 
     and p.TRADE_RESULT_CODE = #{traderesultcode} 
</select>

我用的Oracle  利用 nvl()函数 解决问题

<select id="queryPaySum" resultType="java.lang.Integer" parameterType="map" > 
  select nvl(sum(p.CASH_FEE), 0) from PAY_INFO p 
  where 1=1 
     and p.TRADE_RESULT_CODE = #{traderesultcode} 
</select> 

补充:

下面给大家在看下:用 ISNULL(), NVL(), IFNULL() and COALESCE() 函数替换空值

在数据库操作中,往往要对一些查询出来的空值进行替换,如函数SUM(),这个函数如果没有值会返回NULL,这是我们不希望看到的,

在MySQL中我们可以这样来写:

select IFNULL(sum(data),0) ...

在SQLSERVER中我们可以这样写:

select ISNULL(sum(data),0) ...

在Oracle中我们可以这样写:

select NVL(sum(data),0) ...

对于所有数据库适用的方法可以这样写:

select COALESCE(sum(data),0) ...

COALESCE()用法:

 COALESCE(value,...)

返回第一个不是null的值,如果参数列表全是null,则返回null

sSELECT COALESCE(NULL,1);
    -> 1
SELECT COALESCE(NULL,NULL,NULL);
    -> NULL

相关文章

  • Quartz与Spring集成的两种方法示例

    Quartz与Spring集成的两种方法示例

    这篇文章主要为大家介绍了Quartz与Spring集成的两种方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 浅谈Java虚拟机对内部锁的四种优化方式

    浅谈Java虚拟机对内部锁的四种优化方式

    这篇文章主要介绍了浅谈Java虚拟机对内部锁的四种优化方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 二叉树递归迭代及morris层序前中后序遍历详解

    二叉树递归迭代及morris层序前中后序遍历详解

    这篇文章主要为大家介绍了二叉树递归迭代详解及二叉树的morris遍历、层序遍历、前序遍历、中序遍历、后序遍历示例分析,有需要的朋友可以借鉴参考下
    2021-11-11
  • Java中的布隆过滤器原理实现和应用

    Java中的布隆过滤器原理实现和应用

    Java中的布隆过滤器是一种基于哈希函数的数据结构,能够高效地判断元素是否存在于一个集合中。它广泛应用于缓存、网络协议、数据查询等领域,在提高程序性能和减少资源消耗方面具有显著优势
    2023-04-04
  • 程序包org.springframework不存在的解决办法

    程序包org.springframework不存在的解决办法

    这篇文章主要介绍了程序包org.springframework不存在的解决办法,在使用IDEA创建SpringBoot项目时,刚打开无法正常运行,本文通过图文结合的方式给大家介绍的非常详细,具有一定参考价值,需要的朋友可以参考下
    2024-07-07
  • java基础理论Stream的Filter与谓词逻辑

    java基础理论Stream的Filter与谓词逻辑

    这篇文章主要为大家介绍了java基础理论Stream的Filter与谓词逻辑,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java response响应体和文件下载实现原理

    Java response响应体和文件下载实现原理

    这篇文章主要介绍了Java response响应体和文件下载实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java中终止线程的三种方法

    Java中终止线程的三种方法

    这篇文章主要为大家详细介绍了Java中终止线程的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Java 如何快速,优雅的实现导出Excel

    Java 如何快速,优雅的实现导出Excel

    这篇文章主要介绍了Java 如何快速,优雅的实现导出Excel,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • Java数据结构BFS广搜法解决迷宫问题

    Java数据结构BFS广搜法解决迷宫问题

    广搜BFS的基本思想是: 首先访问初始点v并将其标志为已经访问。接着通过邻接关系将邻接点入队。然后每访问过一个顶点则出队。按照顺序,访问每一个顶点的所有未被访问过的顶点直到所有的顶点均被访问过。广度优先遍历类似与层次遍历
    2022-04-04

最新评论