基于 Spring Boot 瑞吉外卖体系开辟(六)

打印 上一主题 下一主题

主题 2026|帖子 2026|积分 6078

基于 Spring Boot 瑞吉外卖体系开辟(六)

菜品列表

在体系管理端首页,单击左侧菜单栏中的“菜品管理”,会在右侧打开菜品管理页面。

哀求URL/dish/page,哀求方法GET,哀求参数page,pageSize。

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

由于Dish字段不敷用,重新写一个数据传输对象(Dto)(Data Transfer Object)。
创建dto包,在com.itheima.reggie.dto创建DishDto类,类继承Dish字段,并且添加CategoryName属性。
  1. @Data
  2. public class DishDto extends Dish {
  3.     private String categoryName;
  4. }
复制代码
编写SQL

实现dish和category两表联查,这里接纳左毗连查询方式。可以先在navicat实验一下SQL是否精确。
  1. 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文件
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.itheima.reggie.mapper.DishMapper">
  5.     <select id="selectDishDtoPage" resultType="com.itheima.reggie.dto.DishDto">
  6.         select d.*,c.name as category_name from dish d
  7.             LEFT JOIN category c ON d.category_id=c.id
  8.     </select>
  9. </mapper>
复制代码
DishMapper添加执行SQL语句的方法

根据上面id属性值添加方法名,selectDishDtoPage方法就会执行xml文件中的SQL语句,返回List,page参数是主动分页的参数。
  1. @Mapper
  2. public interface DishMapper extends BaseMapper<Dish> {
  3.     public Page<DishDto> selectDishDtoPage(Page page);
  4. }
复制代码
DishService添加selectDishDtoPage方法

直接把DishMapper中的方法复制过来就可以。
  1. public interface DishService extends IService<Dish> {
  2.     public Page<DishDto> selectDishDtoPage(Page page);
  3. }
复制代码
DishServiceImpl添加实现方法

注入DishMapper 调用selectDishDtoPage方法执行SQL语句。
  1. @Service
  2. public class DishServiceImpl extends ServiceImpl<DishMapper, Dish>
  3.         implements DishService {
  4.     @Autowired
  5.     private DishMapper dishMapper;
  6.     @Override
  7.     public Page<DishDto> selectDishDtoPage(Page page) {
  8.         return dishMapper.selectDishDtoPage(page);
  9.     }
  10. }
复制代码
DishController 编写前端哀求方法

前端哀求URL/dish/page,哀求方法GET,哀求参数page,pageSize。
page表现第几页,pageSize表现每一页的记载数。
  1. @RestController
  2. @RequestMapping("/dish")
  3. public class DishController {
  4.     @Autowired
  5.     private DishService dishService;
  6.     @GetMapping("/page")
  7.     public R<Page<DishDto>> list(int page, int pageSize){
  8.         Page<DishDto> pageInfo = new Page<>(page,pageSize);
  9.         dishService.selectDishDtoPage(pageInfo);
  10.         return R.success(pageInfo);
  11.     }
  12. }
复制代码
运行测试

点击菜品管理可以展示出菜品和分类的数据,但是图片表现不出来。

静态资源映射

把img存放在固定目录中记住路径。

在com.itheima.reggie.config.WebMvcConfig文件中设置静态资源映射,addResourceHandlers方法中添加图片映射代码如下:
  1. 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/


运行测试



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表