苍穹外卖day11销量TOP10商品展示,前端有商品名字但无销量(已解决)

苍穹外卖day11销量TOP10商品展示,前端有商品名字但无销量(已解决)

在开发销量TOP10商品展示这一功能时,前端有商品名字但无销量。

我初步怀疑是mapper层存在bug,我的OrderDetailMapper.xml代码如下:

java 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.OrderDetailMapper">

    <!--获取销量TOP10的商品-->
    <select id="getTop10Sales" resultType="com.sky.dto.GoodsSalesDTO">
        select od.name, sum(od.number) as sale
        from order_detail od, orders o
        where od.order_id=o.id and o.status=5 and o.order_time between #{begin} and #{end}
        group by od.name
        order by sale desc
        limit 10
    </select>

</mapper>

我怀疑可能是销量没有封装到GoodsSalesDTO中才导致前端不显示商品销量。

我的GoodsSalesDTO代码如下:

java 复制代码
package com.sky.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GoodsSalesDTO implements Serializable {

    // 商品名称
    private String name;
    // 销量
    private Integer number;
}

终于找到了bug!od.number字段别名sale和DTO属性名number不一致,导致MyBatis无法正确将销量封装到DTO中。

修改OrderDetailMapper.xml代码如下:

java 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.OrderDetailMapper">

    <!--获取销量TOP10的商品-->
    <select id="getTop10Sales" resultType="com.sky.dto.GoodsSalesDTO">
        # Caution: 此处sum(od.number)的别名必须是number,否则无法封装到GoodsSalesDTO中
        select od.name, sum(od.number) as number
        from order_detail od, orders o
        where od.order_id=o.id and o.status=5 and o.order_time between #{begin} and #{end}
        group by od.name
        order by number desc
        limit 10
    </select>

</mapper>

启示

表字段别名必须和待封装对象的属性名保持一致,MyBatis才能够正确封装!

相关推荐
Zxxxxxy_15 小时前
测试入门:从 0 到 1 搞懂开发与 Bug
bug
专注VB编程开发20年2 天前
Windows API 所有老式结构体4字节对齐,但是64位VBA,Twinbasic弄成了8字节对齐,大BUG
windows·bug
IT枫斗者3 天前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
半天法师4 天前
Bug 记录:UE 结构体转 JSON 时 Key 字段大小写异常 (Editor 与打包后表现不一致)
ai·ue5·json·bug
张小俊_4 天前
WPF 跨线程 UI 更新与硬编码赋值引发的 Bug 排查
c#·bug·wpf
鸿儒5174 天前
记录一个C++ Windows程序移植到Linux系统的bug
开发语言·c++·bug
Python私教5 天前
HermesAgent 终端工具 Windows 兼容性修复实战:两个 Bug 的排查与解决
windows·bug
瀚高PG实验室5 天前
pgroonga全文检索插件的BUG
数据库·postgresql·bug·瀚高数据库
¥-oriented7 天前
记录使用C#编程中遇到的一个小bug
c#·bug
MaraSun8 天前
Deepseek 的一个bug
bug·deepseek