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

你可能感兴趣的:(mysql,mybatis,mybatis,开发语言)