基于 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/
在這里插入圖片描述
在這里插入圖片描述

運行測試

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902596.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902596.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902596.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機視覺與深度學習 | TensorFlow基本概念與應用場景:MNIST 手寫數字識別(附代碼)

TensorFlow 基本概念 TensorFlow 是一個開源的機器學習框架,由 Google 開發,核心概念包括: 張量(Tensor):多維數組,是數據的基本單位。計算圖(Graph):早期版本中用于描述數據流和計算過程,2.x 默認啟用即時執行(Eager Execution),兼顧靈活性和性能。層(Layers)…

vue+django+LSTM微博輿情分析系統 | 深度學習 | 食品安全分析

文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站&#xff0c;有好處&#xff01; 編號&#xff1a; D031 LSTM 架構&#xff1a;vuedjangoLSTMMySQL 功能&#xff1a; 微博信息爬取、情感分析、基于負面消極內容輿情分析…

RHCE第三次作業 搭建dns的正向解析服務器

server為服務器 client為客戶端 設置主配置文件 在server下&#xff1a; [rootServer ~]#vim /etc/named.conf #進入到配置頁面&#xff0c;并修改 設置區域文件 [rootServer ~]# vim /etc/named.rfc1912.zones 設置域名解析文件 [rootServer named]# cd /var/named…

Windows 同步技術-一次性初始化

組件通常設計為在首次調用時執行初始化任務&#xff0c;而不是加載它們時。 一次性初始化函數可確保此初始化僅發生一次&#xff0c;即使多個線程可能嘗試初始化也是如此。 Windows Server 2003 和 Windows XP&#xff1a; 應用程序必須使用 互鎖函數 或其他同步機制提供自己的…

OpenCV 中的角點檢測方法詳解

文章目錄 引言1. Harris角點檢測原理1.1 什么是角點&#xff1f;1.2 Harris算法的核心思想1.3 角點、邊緣和平坦區域的區分 2. OpenCV實現Harris角點檢測3. 總結 引言 在計算機視覺和圖像處理中&#xff0c;特征點檢測&#xff08;Feature Detection&#xff09;是一個關鍵任務…

全面介紹AVFilter 的添加和使用

author: hjjdebug date: 2025年 04月 22日 星期二 13:48:19 CST description: 全面介紹AVFilter 的添加和使用 文章目錄 1.兩個重要的編碼思想1. 寫代碼不再是我們調用別人&#xff0c;而是別人調用我們!2. 面向對象的編程方法. 2. AVFilter 開發流程2.1 編寫AVFilter 文件2.1.…

生物計算安全攻防戰:從DNA存儲破譯到碳基芯片防御體系重構

隨著碳基生物芯片突破馮諾依曼架構限制&#xff0c;DNA數據存儲密度達到1EB/克量級&#xff0c;合成生物學與信息技術的融合正引發新一輪安全革命。本文深入解析碳基芯片逆向工程路徑&#xff0c;揭示酶驅動DNA數據解碼的技術突破&#xff0c;預警合成生物回路潛在的數據泄露風…

Spring Boot 集成 Ollama API 使用總結

Spring Boot 中集成 Ollama API 的完整指南&#xff0c;涵蓋基礎配置、API 調用、性能優化及常見問題解決。 一、環境準備 1. 依賴配置 在 pom.xml 中添加必要的依賴&#xff1a; <!-- Spring Web (用于 REST 請求) --> <dependency><groupId>org.springf…

SimVG論文精讀

1. 數據集和任務部分 SimVG用的六個數據集&#xff1a;RefCOCO//g, ReferIt, Flickr30K, and GRefCOCO 數據集名稱圖像數量參照表達式數量參照對象實例數語言特性主要任務RefCOCO19,994142,20950,000?基于 MS COCO 圖像&#xff0c;采用 ReferItGame 收集的指代表達數據集。…

VS中回顯109:對‘pthread_create’未定義的引用

VS中解決 用VS2022寫多線性程時需要使用pthread_create()用于創建線程,即使項目里加了所需要的頭文件#include <pthread.h>但編譯卻報對pthread_create未定義的引用的錯誤,這是因為沒有包含所需要的庫 項目右擊屬性 在庫依賴項中添加 pthread Ubuntu中解決 在Ubuntu中…

kotlin與MVVM結合使用總結(一)

一、Kotlin 與 MVVM 結合的核心優勢 代碼簡潔性 數據類&#xff08;data class&#xff09;簡化 Model 層定義&#xff0c;自動生成equals/hashCode/toString擴展函數簡化 View 層邏輯&#xff08;如點擊事件擴展&#xff09;lateinit/by lazy優化 ViewModel 屬性初始化 異步處…

視頻分析設備平臺EasyCVR安防視頻小知識:安防監控常見故障精準排查方法

隨著安防監控技術的飛速發展&#xff0c;監控系統已經成為現代安防體系中不可或缺的核心組成部分&#xff0c;廣泛應用于安防監控、交通管理、工業自動化等多個領域。然而&#xff0c;監控系統的穩定運行高度依賴于設備的正確配置、線路的可靠連接以及電源的穩定供電。在實際應…

【DeepSeek 學習推理】Llumnix: Dynamic Scheduling for Large Language Model Serving實驗部分

6.1 實驗設置 測試平臺。我們使用阿里云上的16-GPU集群&#xff08;包含4個GPU虛擬機&#xff0c;類型為ecs.gn7i-c32g1.32xlarge&#xff09;。每臺虛擬機配備4個NVIDIA A10&#xff08;24 GB&#xff09;GPU&#xff08;通過PCI-e 4.0連接&#xff09;、128個vCPU、752 GB內…

如何利用深度學習進行交通流量預測與疏導

傳統的交通管理方法&#xff0c;諸如固定的信號燈配時方案、基于經驗的警力部署等&#xff0c;在面對現代城市如此復雜多變的交通狀況時&#xff0c;已然顯得捉襟見肘&#xff0c;難以滿足高效交通管理的需求。 在此背景下&#xff0c;準確的交通流量預測便成為了破解交通擁堵難…

LSTM-GAN生成數據技術

1. 項目概述 本項目利用生成對抗網絡&#xff08;GAN&#xff09;技術來填補時間序列數據中的缺失值。項目實現了兩種不同的GAN模型&#xff1a;基于LSTM的GAN&#xff08;LSTM-GAN&#xff09;和基于多層感知機的GAN&#xff08;MLP-GAN&#xff09;&#xff0c;并對兩種模型…

CMake 入門指南:從零開始配置你的第一個項目

目錄 一、CMake 是什么&#xff0c;為什么要使用 CMake 二、CMakeLists.txt 文件結構與簡單示例 三、進階的CMake 四、靜態庫與動態庫生成及其使用 五、注釋的語法 六、 set、list、message 三個常用的 CMake 函數與命令 七、CMake 的控制語句以及自定義宏/函數 八、為S…

多線程出bug不知道如何調試?java線程幾種常見狀態

當你的多線程代碼結構很復雜的時候很難找出bug的原因所在&#xff0c;此時我們可以使用getState()方法獲取該線程當前的狀態&#xff0c;通過觀察其狀態是阻塞了還是因為沒有啟動等原因導致的。 狀態描述NEW安排了工作&#xff0c;還未開始行動RUNNABLE可工作的&#xff0c;又…

Spark(20)spark和Hadoop的區別

Apache Spark 和 Apache Hadoop 都是廣泛使用的開源大數據處理框架&#xff0c;但它們在設計理念、架構、性能和適用場景等方面存在顯著區別。以下是它們的主要區別&#xff1a; ### **1. 架構設計** - **Hadoop**&#xff1a; - **HDFS&#xff08;Hadoop Distributed File…

【redis】哨兵模式

Redis主從模式雖然支持數據備份與讀寫分離&#xff0c;但存在三大核心缺陷&#xff1a;1. 故障切換依賴人工&#xff08;主節點宕機需手動提升從節點&#xff09;&#xff1b;2. 監控能力缺失&#xff08;無法自動檢測節點異常&#xff09;&#xff1b;3. 腦裂風險&#xff08;…

Spark-Streaming

找出所有有效數據&#xff0c;要求電話號碼為11位&#xff0c;但只要列中沒有空值就算有效數據。 按地址分類&#xff0c;輸出條數最多的前20個地址及其數據。 代碼講解&#xff1a; 導包和聲明對象&#xff0c;設置Spark配置對象和SparkContext對象。 使用Spark SQL語言進行數…