苍穹外卖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才能够正确封装!

相关推荐
callJJ16 天前
Volta + Claude Code 在 Windows 上的路径 Bug 复盘
windows·bug
xsc-xyc16 天前
记一次RK3568搭建NAS BUG:开发板插上 USB 移动硬盘没反应
bug
放风铃的兔子18 天前
我把 5 个 Python bug 投进 CubeSandbox 当沙盘 —— 从 envd 协议反编译到一键 RED→GREEN
bug·issue
zh_xuan18 天前
诡异Bug:输入框删除字符,却越删越多
android·bug
绘梨衣54719 天前
采集基类设计遇到的描述符bug
爬虫·python·bug
不吃鱼的羊19 天前
达芬奇工具Bug
bug
油炸自行车19 天前
【bug】Qt 6 Q_NAMESPACE 跨 DLL 链接错误:LNK2019 无法解析 staticMetaObject
数据库·c++·qt·bug·link2019·q_namespace_exp·namespaceexport
sxd200120 天前
Debian #1135514 bug引发的思考
网络·debian·bug
疏狂难除22 天前
X86-64 Assembly中printf 打印 float 和 double的bug的解决
bug·assembly
nashane23 天前
HarmonyOS 6学习:指南针“文图反向”Bug修复——从“北偏东”变“北偏西”的坐标系纠错
学习·华为·bug·harmonyos