会报错如下 :
org.springframework.web.util.nestedservletexception: обработка запроса не удалась; Вложенное исключение - org.apache.ibatis.binding.bindingexception: Mapper Method 'com.bill.springmybatis.dao.userdao.getuseridbyname, пытаясь вернуть NULL из метода с примитивным типом возврата (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 (Hearlyencodingfilter.java:88)
org.springframework.web.filter.onceperrequestfilter.dofilter (oneperrequestfilter.java:76)
返回类型设置为封装类型 целое число 或者基本类型 int , 都有可能出错
例如
<SELECT ID = "QueryPaysum" resultType = "java.lang.integer" parametertype = "map"> select sum (p.cash_fee) из pay_info p, где 1 = 1 и p.trade_result_code = #{TraderSultCode} </selet> P.Trade_Result_code = #{TraderSultCode} </selet> P.Trade_Result_code = #我用的 Oracle 利用 nvl () 函数 解决问题
<SELECT ID = "QueryPaysum" ResultType = "java.lang.integer" parametertype = "map"> select nvl (sum (p.cash_fee), 0) от pay_info p, где 1 = 1 и p.trade_result_code = #{TraderSultCode} </select>补充 :
下面给大家在看下 : 用 isnull (), nvl (), ifnull () и Coalesce () 函数替换空值
在数据库操作中 , 往往要对一些查询出来的空值进行替换 如函数 Sum (), 这个函数如果没有值会返回 NULL, 这是我们不希望看到的 ,
在 mysql 中我们可以这样来写 :
Выберите ifnull (sum (data), 0) ...
在 SQLServer 中我们可以这样写 :
Выберите Isnull (sum (data), 0) ...
在 Oracle 中我们可以这样写 :
Выберите NVL (sum (data), 0) ...
对于所有数据库适用的方法可以这样写 :
Выберите Coalesce (sum (data), 0) ...
Coalesce () 用法 :
Коал (стоимость, ...)
返回第一个不是 NULL 的值 如果参数列表全是 NULL, 则返回 NULL
ssect Coalesce (null, 1); -> 1 Select Coalesce (NULL, NULL, NULL); -> Нуль