首页 新闻 会员 周边

mybatis 参数传过去了 可是返回一直是空 求大神看下 急啊

0
悬赏园豆:100 [待解决问题]
<?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 能返回一个数啊

Dream露的主页 Dream露 | 初学一级 | 园豆:104
提问于:2015-02-13 10:37
< >
分享
所有回答(3)
0

mybatis 就是问题多,也没个技术支持啥的,好歹开源了,大家都喜欢开源嘛!为什么呢?因为大家认为出了问题,自己打开源码一看就知道咋解决了。

Launcher | 园豆:45045 (高人七级) | 2015-02-13 10:45

这点究竟哪一点出错了,为什么一传参就错误?  我原来写的几个传参都没有出现这种情况啊, 控制台显示的参数也没有错啊

支持(0) 反对(0) Dream露 | 园豆:104 (初学一级) | 2015-02-13 10:56

@Dream露: attempted to return null from a method with a primitive return type (int).

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 10:59

@Launcher: 我知道他返回的是一个空但是在数据库查询下结果是这样的 不应该返回204吗?

支持(0) 反对(0) Dream露 | 园豆:104 (初学一级) | 2015-02-13 11:05

@Dream露: 给你两个建议:

1、使用 mybatis 的源码调试;

2、写一个测试程序,直接使用 oracle.jdbc.driver 执行你的 sql 语句,看看返回的是 null 还是 204。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 11:10

@Launcher: 解决了 数据库中字段是char 类型的 所以找不到--

支持(0) 反对(0) Dream露 | 园豆:104 (初学一级) | 2015-02-13 11:39

@Dream露: 这样啊,你真厉害,我确实没看出来你的数据库中的类型和你代码中的类型不一样。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 11:51
0

数据库中是char 类型 如果字符长度不够 会自动补充空格 导致sql语句查询不出来--

Dream露 | 园豆:104 (初学一级) | 2015-02-13 11:41
0

#在myBatis中会将内容直接替换,同时会带上单引号  $则会有相应的类型转换

对应value是整型的你用$试试

JasonNET | 园豆:168 (初学一级) | 2015-11-17 18:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册