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

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 2018-05-12 07:23
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多