sd3033539
org.zhao.com
2016-07-07 10:26
采纳率: 83.3%
浏览 8.7k

mybatis 查询不出结果,但是打印的SQL 可以执行

我今天发现了一个非常诡异的错误,我在此请求大家集思广益一下.

我的系统采用的是 spring + mybatis ,我在做一个简单的数据查询的时候碰到查询不出来的问题,开始我认为是 resultMap 配置有问题,后台我测试很多遍发现不是这个原因, 最后我发现一个诡异的事情,

List resList = sysUserAccountService.selectByParam(sysUserAccount);
这个语句是一个简单的调用service 在调用--> mapper 的简单查询,在我采用 (1) 号 写法的时候 ,可以正常返回 LIST
但是采用 (2) 号 写法的时候,,,LIST = null
也就是说我无法带值进去查询,但是写 where id is not null 是可以查询到, 写 where id = 'A001' LIST 就是 等于NULL

另外一个问题就是,某些SQL语句, JAVA 调用DAO方法的结果为NULL的时,mybatis 的日志打印出来的SQL 我试着放到 数据库工具中运行是有结果,也就代表SQL 肯定没写错.

selelect (1) 号

<select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount">
        select * from sys_user_account
    </select>

1号 返回结果正常,LIST收到100多个记录

selelect (2) 号

 <select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount">
        select * from sys_user_account
        where ACCOUNT_TYPE = 3
</select>

2号 JAVA LIST 接收到的为一个空LIST ,LIST 中的元素为 null SIZE 为 0. 里面的值我都写死了,排除了传值问题,所有这么写

3号

    <select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount">
        select * from sys_user_account
        where ACCOUNT_TYPE is not null
    </select>

结果是正常,查询到了所有 TYPE 不为空的

我感觉很奇怪,找了很久都没有找到问题,希望有人能帮帮我.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • yu578707139
    yu578707139 2018-05-12 07:23

    这个问题我也碰到,这里也有人碰到同样的问题:

    https://bbs.csdn.net/topics/392215993?page=1#post-403224823

    点赞 评论
  • iteye_5821
    $大江东去$ 2020-12-02 17:27

    我也遇到同样问题

    点赞 评论

相关推荐