问题1:写用户端历史订单分页查询时,由于忽略了Api文档中,返回结果中包含OrderDetail这一项,将record中只包含了Order,缺少了OrderDetail,前端没有数据显示

在这里插入图片描述
上述OrderVO不但包含了Order这一项,还包含了OrderDetail这一项.因此前端能够有数据显示

总结:注意返回数据的完整性,不要返回少的数据,影响前端正确显示

问题2:接口文档中只写了根据状态查,但标准答案的Mapper中写的查询条件多了很多

解决思路:对订单进行查询,分页查询也是查询,需要框定很多限制条件
比如1.要查找当前用户的订单
2.根据状态找,
3.根据电话号码模糊找,
4.根据订单号模糊找,
5.根据下单时间范围找

所以pageQuery中要传入一个OrdersDTO对象,这个对象中封装了这些限制条件

OrdersDTO ordersDTO = new OrdersDTO();
ordersDTO.setUserId(BaseContext.getCurrentId());
ordersDTO.setStatus(status);

Page<Orders> pageResult = ordersMapper.pageQuery(ordersDTO);

//确定的查询条件,放到ordersDTO中,模糊查询都是前端输入获得到的,这里不用传

问题3:先把查到的Order数据放到OrderVO中,再把查到的OrderDetail数据放到OrderVO中,再把完整的OrderVO数据放到List中.顺序要清晰

Order ----BeanUtils.copyProperties---->OrderVO
orderDetailList ----set---->OrderVO

OrderVO -----add------> List<OrderVO

            BeanUtils.copyProperties(order,orderVO);
            orderVO.setOrderDetailList(orderDetailList);
            //用一个list把查到的一堆数据(OrderVO)装起来,要用add
            records.add(orderVO);

4. Mapper.xml中 >= 和 <= 是什么

			<!--<if test="beginTime != null">
                and order_time &gt;= #{beginTime}
            </if>
            <if test="endTime != null">
                and order_time &lt;= #{endTime}
            </if>-->
            /*'&gt;':代表大于>*/
            /*'&lt;':代表小于*/
            /*在XML文档里,大于号和小于号需要用转义符(就上面两个)代替*/

总结: 第一个是>= 第二个是<=
在XML文档里,大于号和小于号需要用转义符(就上面两个)代替

问题5:微信开发者工具,打开小程序之后一片空白

原因:微信开发者工具自动更新,导致基础库和不校验都被更改了,
解决方法:改成下图就能正确显示了
在这里插入图片描述

问题6:OrderVO需要分页查找找到的Order,还需要从OrderDetail表里找到订单里有哪些菜

		List<Orders> ordersList = page.getResult();
        for (Orders orders : ordersList) {
            OrderVO orderVO = new OrderVO();
            BeanUtils.copyProperties(orders,orderVO);
            orderVO.setOrderDishes(getOrderDishes(orders.getId()));
            result.add(orderVO);

过程:通过mapper找到的page,**能用page.getResult()得到数据order(list类型的),**然后再一个个提取出来,通过BeanUtils装到OrderVO里,再一个个add到orderVO的list里

问题7:SELECT COUNT(id) 和 SELECT COUNT(*) 有什么区别

在大多数情况下结果是相同的,但它们有一些细微的区别。以下是两者的具体区别:

  1. COUNT(id)
    作用:统计 id 列中不为 NULL 的行数。

细节:如果 id 是主键或具有唯一约束,通常不会有 NULL 值,因此 COUNT(id) 会统计所有符合条件的行。如果 id 列允许 NULL 值,则 COUNT(id) 会忽略 NULL 值,只统计非 NULL 的行。

  1. COUNT(*)
    作用:统计表中所有行的数量,无论列的值是否为 NULL。

细节:COUNT() 直接统计表中的行数,不关心具体列的值。即使某些列是 NULL,COUNT() 仍然会将这些行计入总数。

问题8:报错:Unknown column ‘rejectionReason’ in ‘field list’

			<if test="cancelTime != null">
                cancel_time = #{cancelTime},
            </if>
            <if test="rejectionReason != null">
                rejectionReason = #{rejectionReason},错的
                rejection_reason = #{rejectionReason},
            </if>

解决方法:上方代码rejection_reason不能写成rejectionReason

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐