mybatis 查询结果为0但是返回了null,resultType是long,这要怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 查询结果为0但是返回了null,resultType是long,这要怎么解决?相关的知识,希望对你有一定的参考价值。

参考技术A resultType应该是java.lang.Long 参考技术B 只查询一个字段的情况下才能正常返回 比如 select count(*) ,如果是这样请传个图片看下详细问题

(mybatis)直接执行sql结果为空,但是session.selectList出的list结果中包含了一个属性为null的bean对象

这是dao层的代码

这是debug结果,在数据库端直接执行sql,没有一条记录

怎么回事呢?
sql中用到了GROUP_CONCAT这个函数

今天碰巧遇到这个问题了,原因是关联表查询的问题,第一个表关联查的时候对应的关联表中的记录有多条的情况,这时候第一个表有记录但是关联的时候就没有合适的值(根据你要查的列而定);比如c left join d 这个时候要是c中的一条记录对应d中的可能有多条记录,而你要查的列又都是d中的字段,出来的就是all element is null 但是size=1;
解决办法:1.将你获取的list去除null元素;
2.查询的时候加d的判断条件,比如d.id is not null
参考技术A 检查下group by 语句,我碰到这种情况,是mysql select语句中用了max函数,但没有用group by,查询结果本应该为空,但返回的list的size为1,字段全为null 参考技术B sql语句贴出来,部分函数会影响数据,你可以看到有个orderId=0,表示执行你的sql在数据库里面能查到数据,只不过不是正常的结果。 参考技术C 没有数据,所以为null啊追问

没有数据,list集合的size()应该为0,对吗?现在是size()=1,问什么?

以上是关于mybatis 查询结果为0但是返回了null,resultType是long,这要怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

java mybatis 查询列表会返回为null吗

使用mybatis写一个验证方法时,mysql数据库查询结果返回null,mybatis无法将其封装为boolean类型,怎么办?

mybatis学习----------查询数据库返回结果为空

mybatis 在查询的时候,可以返回Map,但是一旦这个字段为null的时候,map里就没有了,怎么解决这个问题?

mybatis多表查询,只取某些字段,其余字段返回为空,怎么处理??

Mybatis Puls @Select() 查询结果映射为Map为null的坑