mybatis框架遇到的问题:All elements are null
·
今天在做一个查询接口,应用场景是统计选择日期范围内的每日数据量,于是便想到了使用count()函数来统计总行数来代表数据量,并且以记录时间的字段来作为分组标准(group by),大体思路有了之后便开始动手编写。在navicat中运行sql语句可以查出结果,但是在xml文件中执行之后却无法得到结果,通过debug调试后,我发现该查询方法返回的竟全部是null
All elements are null
排查掉sql语句编写错误、传参错误等情况后,我就猜测是不是数据接收错误,于是排查了VO类的数据类型的可能性
@Data
public class VO {
private String date;
private Long count;
}
排查后发现不是数据类型的问题,最终锁定是select标签中我写成了resultType来接收结果,换成resultMap来接收之后就可以了!
<select id="countDaily" resultMap="countDailyMap">
select
DATE_FORMAT(time,'%Y-%m-%d') as d,
count(*)
from a
where del_flag = 0
and
DATE_FORMAT(time,'%Y-%m-%d') BETWEEN #{beginDate} AND #{endDate}
GROUP BY d;
</select>
<resultMap id="countDailyMap" type="VO">
<result property="date" column="d"/>
<result property="count" column="count(*)"/>
</resultMap>
下面是mapper接口定义的方法
List<DailyVO> countDaily(@Param("beginDate") String beginDate,@Param("endDate") String endDate);
总结: mybatis框架做查询非字段类型的参数时,可以定义resultMap来接收
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)