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来接收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BeJav

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值