会报错如下 :
org.springframework.web.util.nestedservletException: pemrosesan permintaan gagal; Pengecualian bersarang adalah org.apache.iatis.binding.bindingException: Metode mapper 'com.bill.springmybatis.dao.userdao.getuseridbyname mencoba untuk mengembalikan nol dari metode dengan tipe pengembalian primitif (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 (karakterencodingfilter.java:88)
org.springframework.web.filter.oncperrequestfilter.dofilter (sekaliPerquestfilter.java:76)
返回类型设置为封装类型 Integer 或者基本类型 int , 都有可能出错
例如
<Pilih id = "querypaysum" resultType = "java.lang.integer" parameterType = "peta"> pilih sum (p.cash_fee) dari pay_info p di mana 1 = 1 dan p.trade_result_code = #{traderesultCode} </pilih我用的 oracle 利用 nvl () 函数 解决问题
<pilih id = "querypaysum" resultType = "java.lang.integer" parameterType = "peta"> pilih nvl (sum (p.cash_fee), 0) dari pay_info p di mana 1 = 1 dan p.trade_result_code = #{traderesultCode} </pilih>补充 :
下面给大家在看下 : 用 isnull (), nvl (), ifnull () dan coalesce () 函数替换空值
在数据库操作中 , 往往要对一些查询出来的空值进行替换 , 如函数 sum (), 这个函数如果没有值会返回 null, 这是我们不希望看到的 ,
在 mysql 中我们可以这样来写 :
Pilih IFNULL (SUM (data), 0) ...
在 SQLServer 中我们可以这样写 :
SELECT ISNULL (SUM (DATA), 0) ...
在 Oracle : :
Pilih NVL (SUM (Data), 0) ...
对于所有数据库适用的方法可以这样写 :
Pilih Coalesce (Sum (Data), 0) ...
Coalesce () 用法 :
Coalesce (nilai, ...)
返回第一个不是 null 的值 , 如果参数列表全是 null, 则返回 null
Sselect Coalesce (null, 1); -> 1Select coalesce (null, null, null); -> null