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). 返回类型设置为封装类型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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |