当前位置: 首页 > news >正文

基于 Spring Boot 瑞吉外卖系统开发(六)

基于 Spring Boot 瑞吉外卖系统开发(六)

菜品列表

在系统管理端首页,单击左侧菜单栏中的“菜品管理”,会在右侧打开菜品管理页面。
在这里插入图片描述
请求URL/dish/page,请求方法GET,请求参数pagepageSize
在这里插入图片描述

该菜品列表展示字段涉及菜品和分类名称数据,菜品(dish表)、分类(category表)来自不同表,所以这里打算使用自定义SQL两表联查。

创建DishDto

因为Dish字段不够用,重新写一个数据传输对象(Dto)(Data Transfer Object)。
创建dto包,在com.itheima.reggie.dto创建DishDto类,类继承Dish字段,并且添加CategoryName属性。

@Data
public class DishDto extends Dish {private String categoryName;
}

编写SQL

实现dishcategory两表联查,这里采用左连接查询方式。可以先在navicat尝试一下SQL是否正确。

select d.*,c.name as category_name from dish d LEFT JOIN category c ON d.category_id=c.id

创建自定义SQL配置文件

在resources目录下创建mapper目录,然后在mapper目录下创建DishMapper.xml文件

<?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.itheima.reggie.mapper.DishMapper"><select id="selectDishDtoPage" resultType="com.itheima.reggie.dto.DishDto">select d.*,c.name as category_name from dish dLEFT JOIN category c ON d.category_id=c.id</select></mapper>

DishMapper添加执行SQL语句的方法

根据上面id属性值添加方法名,selectDishDtoPage方法就会执行xml文件中的SQL语句,返回List,page参数是自动分页的参数。

@Mapper
public interface DishMapper extends BaseMapper<Dish> {public Page<DishDto> selectDishDtoPage(Page page);}

DishService添加selectDishDtoPage方法

直接把DishMapper中的方法复制过来就可以。

public interface DishService extends IService<Dish> {public Page<DishDto> selectDishDtoPage(Page page);}

DishServiceImpl添加实现方法

注入DishMapper 调用selectDishDtoPage方法执行SQL语句。

@Service
public class DishServiceImpl extends ServiceImpl<DishMapper, Dish> implements DishService {@Autowiredprivate DishMapper dishMapper;@Overridepublic Page<DishDto> selectDishDtoPage(Page page) {return dishMapper.selectDishDtoPage(page);}}

DishController 编写前端请求方法

前端请求URL/dish/page,请求方法GET,请求参数pagepageSize
page表示第几页,pageSize表示每一页的记录数。

@RestController
@RequestMapping("/dish")
public class DishController {@Autowiredprivate DishService dishService;@GetMapping("/page")public R<Page<DishDto>> list(int page, int pageSize){Page<DishDto> pageInfo = new Page<>(page,pageSize);dishService.selectDishDtoPage(pageInfo);return R.success(pageInfo);}}

运行测试

点击菜品管理可以展示出菜品和分类的数据,但是图片显示不出来。
在这里插入图片描述

静态资源映射

img存放在固定目录中记住路径。
在这里插入图片描述
com.itheima.reggie.config.WebMvcConfig文件中配置静态资源映射,addResourceHandlers方法中添加图片映射代码如下:

registry.addResourceHandler("/images/**").addResourceLocations("file:D:/file/img/");

配置后重启项目,图片访问路径为
http://127.0.0.1:8080/images/0a3b3288-3446-4420-bbff-f263d0c02d8e.jpg

修改前端HTML中的图片路径

修改backend/page/food/list.html文件中的代码,/common/download?name=修改为/images/
在这里插入图片描述
在这里插入图片描述

运行测试

在这里插入图片描述

相关文章:

  • 【每日八股】复习 Redis Day2:Redis 的持久化(下)
  • 共建安全可控大模型AI底座,助力国产化升级——麒麟信安与新智惠想达成战略合作
  • STM32---串口通信USART
  • MySQL通用性能优化模板(MySQL General Performance Optimization Template)
  • Kafka简介
  • Maven 依赖坐标与BOM统一管理
  • ERR_SSL_KEY_USAGE_INCOMPATIBLE
  • Ubuntu18.04 升级最新版本Cmake
  • kaggle网站使用教程
  • 2025.04.23华为机考第三题-300分
  • JVM 生产环境问题定位与解决实战(七):实战篇——OSSClient泄漏引发的FullGC风暴
  • 网络原理————HTTP
  • ReAct Agent 实战:基于DeepSeek从0到1实现大模型Agent的探索模式
  • 【每天一个知识点】如何解决大模型幻觉(hallucination)问题?
  • Keras
  • Java与C语言核心差异:从指针到内存管理的全面剖析
  • 用 Firebase 和 WebRTC 快速搭建一款浏览器视频聊天应用
  • 线段树讲解(小进阶)
  • 基于UDP协议的群聊服务器开发(C/C++)
  • 深度解析算法之模拟
  • 家政阿姨如何炼成全国劳模?做饭、收纳、养老、外语样样都会
  • 《探秘海昏侯国》数字沉浸特展亮相首届江西文化旅游产业博览交易会
  • 近七成科创板公司2024年营收增长,285家营收创历史新高
  • 宁波市纪委监委通报4起违反中央八项规定精神典型问题
  • 俄宣布停火三天,外交部:希望各方继续通过对话谈判解决危机
  • 今年一季度全国社会物流总额达91万亿元,工业品比重超八成