<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sgm.epra.pp.rfq.dao.QuoteDao"> <select id="selectQuote" parameterType="com.sgm.epra.pp.rfq.dto.QuoteParam" resultType="int"> select id from tt_pp_rfq_round where RFQ_NO=#{rfqNo} and ROUND_NO =#{rfqRondNo} </select> </mapper>
控制台打印出的信息
2015-02-13 10:30:34 DEBUG http-8080-1 java.sql.Connection (Slf4jImpl.java:47) - ooo Using Connection [oracle.jdbc.driver.T4CConnection@1ad5432]
2015-02-13 10:30:34 DEBUG http-8080-1 java.sql.Connection (Slf4jImpl.java:47) - ==> Preparing: select id from tt_pp_rfq_round where RFQ_NO=? and ROUND_NO =?
2015-02-13 10:30:34 DEBUG http-8080-1 java.sql.PreparedStatement (Slf4jImpl.java:47) - ==> Parameters: GRFQ00104800(String), 1(String)
2015-02-13 10:30:34 ERROR http-8080-1 org.codehaus.xfire.handler.DefaultFaultHandler (DefaultFaultHandler.java:35) - Fault occurred!
org.apache.ibatis.binding.BindingException: Mapper method 'selectQuote' (interface com.sgm.epra.pp.rfq.dao.QuoteDao) attempted to return null from a method with a primitive return type (int).
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:42)
at $Proxy48.selectQuote(Unknown Source)
参数不是明明传过去了吗?
如果将参数直接写成GRFQ00104800 和 1 能返回一个数啊
mybatis 就是问题多,也没个技术支持啥的,好歹开源了,大家都喜欢开源嘛!为什么呢?因为大家认为出了问题,自己打开源码一看就知道咋解决了。
这点究竟哪一点出错了,为什么一传参就错误? 我原来写的几个传参都没有出现这种情况啊, 控制台显示的参数也没有错啊
@Dream露: attempted to return null from a method with a primitive return type (int).
@Launcher: 我知道他返回的是一个空但是在数据库查询下结果是这样的 不应该返回204吗?
@Dream露: 给你两个建议:
1、使用 mybatis 的源码调试;
2、写一个测试程序,直接使用 oracle.jdbc.driver 执行你的 sql 语句,看看返回的是 null 还是 204。
@Launcher: 解决了 数据库中字段是char 类型的 所以找不到--
@Dream露: 这样啊,你真厉害,我确实没看出来你的数据库中的类型和你代码中的类型不一样。
数据库中是char 类型 如果字符长度不够 会自动补充空格 导致sql语句查询不出来--
#在myBatis中会将内容直接替换,同时会带上单引号 $则会有相应的类型转换
对应value是整型的你用$试试