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

相关文章

  • MybatisPlus实现简单增删改查功能

    MybatisPlus实现简单增删改查功能

    这篇文章主要介绍了MybatisPlus实现简单增删改查的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Idea 2020.2安装MyBatis Log Plugin 不可用的解决方法

    Idea 2020.2安装MyBatis Log Plugin 不可用的解决方法

    小编在使用时发现Idea 2020.2 MyBatis Log Plugin 收费了,这个可以替代用,小编特此把解决方案分享到脚本之家平台供大家参考,感兴趣的朋友一起看看吧
    2020-11-11
  • js判断是否含有GBK以外的字符的函数

    js判断是否含有GBK以外的字符的函数

    判断是否含有GBK以外的特殊字符
    2008-10-10
  • redis发布订阅Java代码实现过程解析

    redis发布订阅Java代码实现过程解析

    这篇文章主要介绍了redis发布订阅Java代码实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 详谈HashMap和ConcurrentHashMap的区别(HashMap的底层源码)

    详谈HashMap和ConcurrentHashMap的区别(HashMap的底层源码)

    下面小编就为大家带来一篇详谈HashMap和ConcurrentHashMap的区别(HashMap的底层源码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java IO流和文件操作实现过程解析

    Java IO流和文件操作实现过程解析

    这篇文章主要介绍了Java IO流和文件操作实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Springboot的maven间接依赖的实现

    Springboot的maven间接依赖的实现

    这篇文章主要介绍了Springboot的maven间接依赖的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 详解springcloud Feign的Hystrix支持

    详解springcloud Feign的Hystrix支持

    这篇文章主要介绍了详解springcloud Feign的Hystrix支持,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • SpringBoot整合thymeleaf 报错的解决方案

    SpringBoot整合thymeleaf 报错的解决方案

    这篇文章主要介绍了SpringBoot整合thymeleaf 报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot使用外置tomcat启动方式

    springboot使用外置tomcat启动方式

    这篇文章主要介绍了springboot使用外置tomcat启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论