最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot音樂服務器項目如何刪除音樂模塊

 更新時間:2025年08月04日 10:27:35   作者:無限進步island  
本文詳解Java音樂播放服務器刪除功能,分為單刪與批刪模塊,基于三層架構(實體層、Mapper層、Controller層)實現(xiàn),涵蓋文件路徑處理、事務操作、安全校驗等關鍵點,確保數(shù)據(jù)庫與物理文件同步刪除,感興趣的朋友一起看看吧

Java音樂播放服務器:刪除音樂功能設計與實現(xiàn)詳解

在音樂播放服務器中,刪除音樂功能分為單個刪除批量刪除兩個核心模塊。

接口設計預期設計:

請求: {post, /music/delete, id } 

響應: {"status":0,"message":"刪除成功!", "data":true }

我們已經在前面定義了Music的實體層(Model)

接下來我們就定義出兩個接口

一、Mapper層(數(shù)據(jù)訪問層)

1. 接口聲明(MusicMapper.java)<查到了才能刪,查是刪的基礎>

    /**
     根據(jù)ID刪除?樂
     @param musicId
     @return
     */
    int deleteMusicById(int musicId);
    /**
     根據(jù)ID查詢?樂
     @param id
     @return
     */
    Music findMusicById(int id);

2. XML映射(MusicMapper.xml)

    </insert>
    <delete id="deleteMusicById" parameterType="java.lang.Integer">
        delete from music where id = #{id}
    </delete>
    <select id="findMusicById" resultType="com.example.musicplayer.model.Music">
        select * from music where id = #{id}
    </select>

二、Controller層(API設計)

1. 單個音樂刪除(/music/delete

@RequestMapping("/delete")
    public ResponseBodyMessage<Boolean> deleteMusicById(@RequestParam String id){
        int musicId = Integer.parseInt(id);
        Music music = musicMapper.findMusicById(musicId);
        if (music == null)
            return new ResponseBodyMessage<>(-1,"沒有你所需要的音樂",false);
            int ret = musicMapper.deleteMusicById(musicId);
            if (ret == 1) {
                int index = music.getUrl().lastIndexOf("=");
                String filename = music.getUrl().substring(index + 1);
                File file = new File(SAVE_PATH + "/" + filename + ".mp3");
                System.out.println("路徑為:" + file.getPath());
                if (file.delete()) {
                    return new ResponseBodyMessage<>(0, "刪除音樂成功", true);
                } else {
                    return new ResponseBodyMessage<>(1, "刪除音樂失敗", false);
                }
            }else {
                return new ResponseBodyMessage<>(-1,"在數(shù)據(jù)庫中刪除音樂失敗",false);
            }
        }

在我習慣看來,我是不太習慣在controller層寫下這么多邏輯,我認為這里的絕大部分代碼應該是放在service層去實現(xiàn)的,但是這個項目體量接口比較少,所以我就都放在controller層一并實現(xiàn)了。

寫完后我們跑起來運行一遍 

2. 批量刪除(/music/deleteSel

<實體層、mapper層對批量處理都是適用的,所以只需要在這里處理一個批量邏輯即可>

/**
     根據(jù)id數(shù)組批量刪除?樂
     @param id
     @return
     */
    @RequestMapping("/deleteSel")
    public ResponseBodyMessage<Boolean> deleteSelMusic(@RequestParam("id[]")
                                                               List<Integer> id) {
        int sum = 0;
        for (int i = 0; i < id.size(); i++) {
            Music music = musicMapper.findMusicById(id.get(i));
            int ret = musicMapper.deleteMusicById(id.get(i));
            if(ret == 1) {
                //數(shù)據(jù)庫刪除成功,那么服務器上的數(shù)據(jù)也需要發(fā)?改變
                //刪除服務器?錄下的對應的?件
                int index = music.getUrl().lastIndexOf("=");
                String filename = music.getUrl().substring(index+1);
                File file = new File(SAVE_PATH+"\\"+filename+".mp3");
                if(file.delete()) {
                    sum += ret;
                }else {
                    System.out.println("刪除失?。?);
                    return new ResponseBodyMessage<>(-1,"刪除服務器上的?樂失敗",false);
                }
            }else {
                System.out.println("刪除失?。?);
                return new ResponseBodyMessage<>(-1,"刪除數(shù)據(jù)上的?樂信息失敗",false);
            }
        }
        if(sum == id.size()) {
            System.out.println("刪除成功!");
            return new ResponseBodyMessage<>(0,"批量刪除成功",true);
        }else {
            System.out.println("刪除失?。?);
            return new ResponseBodyMessage<>(0,"批量刪除成功",false);
        }
    }

批量刪除實際也就是將id變成一個id[]的一維數(shù)組,在刪除時遍歷到for循環(huán)中,根據(jù)給過來的參數(shù)遍歷刪除

三、關鍵技術解析

  1. 文件路徑處理
    • 通過@Value("${music.local.path}")讀取配置文件中的存儲路徑
    • 從URL參數(shù)解析真實文件名(如/music/get?path=song → song.mp3
  2. 事務性操作
    • 數(shù)據(jù)庫刪除 → 文件刪除原子操作
    • 任一環(huán)節(jié)失敗立即返回錯誤,避免臟數(shù)據(jù)
  3. 安全校驗
    • Session驗證確保用戶登錄狀態(tài)
    • 前置查詢防止非法刪除
  4. 批量刪除優(yōu)化
    • 循環(huán)處理每個ID而非單條SQL
    • 獨立處理每條記錄保證部分成功時的可控性

總結:刪除功能通過三層架構實現(xiàn):

  • 實體層映射數(shù)據(jù)結構
  • Mapper層操作數(shù)據(jù)庫
  • Controller層協(xié)調業(yè)務邏輯與文件操作

關鍵點在于保持數(shù)據(jù)庫記錄與物理文件的同步,并通過嚴格校驗保證系統(tǒng)安全性。

代碼倉庫:刪除音樂接口開發(fā) 7.22 ·/音樂服務器 - Gitee.com 

到此這篇關于Spring Boot音樂服務器項目如何刪除音樂模塊的文章就介紹到這了,更多相關Spring Boot刪除音樂模塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot監(jiān)控所有線程池的四種解決方案及代碼案例

    SpringBoot監(jiān)控所有線程池的四種解決方案及代碼案例

    這篇文章介紹了四種監(jiān)控Spring Boot中所有線程池的解決方案,并提供了代碼案例,推薦使用自動發(fā)現(xiàn)機制來監(jiān)控所有線程池,需要的朋友可以參考下
    2025-12-12
  • Spring配置使用之Bean生命周期詳解

    Spring配置使用之Bean生命周期詳解

    這篇文章主要介紹了Spring配置使用之Bean生命周期詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • SpringBoot服務上實現(xiàn)接口限流的方法

    SpringBoot服務上實現(xiàn)接口限流的方法

    這篇文章主要介紹了SpringBoot服務上實現(xiàn)接口限流的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 詳解Java數(shù)據(jù)庫連接JDBC基礎知識(操作數(shù)據(jù)庫:增刪改查)

    詳解Java數(shù)據(jù)庫連接JDBC基礎知識(操作數(shù)據(jù)庫:增刪改查)

    這篇文章主要介紹了詳解Java數(shù)據(jù)庫連接JDBC基礎知識(操作數(shù)據(jù)庫:增刪改查),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Eclipse配置springIDE插件的方法步驟

    Eclipse配置springIDE插件的方法步驟

    本篇文章主要介紹了Eclipse配置springIDE插件的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Windows上安裝并使用SDKMAN詳細教程(JDK多版本管理)

    Windows上安裝并使用SDKMAN詳細教程(JDK多版本管理)

    在Linux和macOS上,開發(fā)者可以輕松使用SDKMAN來管理多個JDK版本,但Windows原生并不直接支持SDKMAN,這篇文章主要介紹了Windows上安裝并使用SDKMAN管理JDK多版本管理的相關資料,需要的朋友可以參考下
    2026-05-05
  • Spring 異常單元測試的解決

    Spring 異常單元測試的解決

    這篇文章主要介紹了Spring 異常單元測試的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Dubbo RPC接口的參數(shù)校驗過程

    Dubbo RPC接口的參數(shù)校驗過程

    文章介紹了在服務A調用服務B時,如何通過添加validation="true"實現(xiàn)參數(shù)校驗,包括在pom文件、配置文件或注解@Reference中設置,并說明服務B的接口DTO可嵌套校驗,需使用@Valid和@Validated
    2025-10-10
  • Java實現(xiàn)兩人五子棋游戲(六) 行棋方變換

    Java實現(xiàn)兩人五子棋游戲(六) 行棋方變換

    這篇文章主要為大家詳細介紹了Java實現(xiàn)一個簡單的兩人五子棋游戲,行棋方變換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Spring中的ConversionService源碼解析

    Spring中的ConversionService源碼解析

    這篇文章主要介紹了Spring中的ConversionService源碼解析,ConversionService是類型轉換服務的接口,從名字就可以看出ConverterRegistry是要實現(xiàn)轉換器注冊表的接口,添加和移除Converter和GenericConverter,需要的朋友可以參考下
    2023-11-11

最新評論

乌鲁木齐县| 定西市| 黄大仙区| 葫芦岛市| 南澳县| 营口市| 江津市| 光泽县| 辉南县| 乌拉特中旗| 大庆市| 龙门县| 论坛| 丹巴县| 庆云县| 乡宁县| 乐陵市| 清镇市| 凤庆县| 神木县| 桐庐县| 昌图县| 新余市| 金门县| 洪湖市| 汉川市| 石狮市| 淄博市| 巫山县| 波密县| 九寨沟县| 开阳县| 射洪县| 西平县| 宁国市| 虎林市| 静宁县| 英吉沙县| 尖扎县| 永靖县| 徐汇区|