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

作者:mrr 时间:2023-08-09 02:41:14 

会报错如下:

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
标签:mybatis,int,类型
0
投稿

猜你喜欢

  • SpringBoot中的五种对静态资源的映射规则的实现

    2023-06-21 08:31:47
  • C#使用TimeSpan时间计算的简单实现

    2023-10-06 07:25:55
  • MyBatis利用MyCat实现多租户的简单思路分享

    2022-08-16 18:58:33
  • 详解JavaScript中的函数声明和函数表达式

    2023-04-26 01:56:07
  • WinForm中的几个实用技巧汇总

    2022-08-12 13:17:02
  • Java_异常类(错误和异常,两者的区别介绍)

    2023-09-19 08:53:27
  • android计算器实现两位数的加减乘除

    2022-11-08 06:46:32
  • Java设计模式之迭代模式(Iterator模式)介绍

    2022-07-24 16:03:29
  • SpringBoot集成Redisson实现分布式锁的方法示例

    2021-10-30 16:59:38
  • C#实现五子棋游戏

    2022-07-26 12:55:34
  • java GUI编程之paint绘制操作示例

    2023-11-24 17:58:39
  • java 串口通信实现流程示例

    2023-02-08 01:10:35
  • Android RadioButton 图片位置与大小实例详解

    2022-04-12 18:00:20
  • java语言图形用户登录界面代码

    2021-09-11 23:19:34
  • c#中list.FindAll与for循环的性能对比总结

    2021-08-15 21:20:44
  • Java多线程之同步工具类CyclicBarrier

    2021-10-13 00:24:20
  • Java编程基础测试题分享

    2023-11-27 22:14:58
  • SpringBoot自动装配原理小结

    2023-11-18 16:54:06
  • java -jar设置添加启动参数实现方法

    2022-04-26 21:05:37
  • Java中超详细this与super的概念和用法

    2021-05-25 19:45:50
  • asp之家 软件编程 m.aspxhome.com