一、項目架構概覽
該音樂播放服務器采用經典的MVC分層架構,核心模塊包括:
- 實體層:定義數據模型
- Mapper層:數據庫操作接口
- Controller層:HTTP請求處理
- 工具層:加密、響應封裝等輔助功能
項目核心功能包括用戶認證、音樂上傳/播放、收藏管理等,下面按分層結構詳解實現邏輯。
二、接口設計
- ?持模糊查詢
- ?持傳?參數為空
請求示例
{"method": "get","url": "/music/findmusic","data": {"musicName": musicName}
}
響應示例
- 未給 musicName 傳參時
{"status": 0,"message": "查詢到了歌曲的信息","data": [{"id": 19,"title": "銀河與星斗(女生版)","singer": "gaobo","url": "/music/get?path=銀河與星斗(女生版)","time": "2022-03-28","userid": 3},{"id": 20,"title": "liu","singer": "bit","url": "/music/get?path=liu","time": "2022-03-28","userid": 3}]
}
- 給 musicName 傳參時
{"status": 0,"message": "查詢到了歌曲的信息","data": [{"id": 19,"title": "銀河與星斗(女生版)","singer": "gaobo","url": "/music/get?path=銀河與星斗(女生版)","time": "2022-03-28","userid": 3}]
}
三、Mapper層實現
使用MyBatis實現數據庫操作,核心接口:
1. 查詢功能Mapper
/***根據歌曲名字,查詢?樂* @param name* @return*/List<Music> findMusicByMusicName(String name);/**查詢所有的?樂@return*/List<Music> findMusic();
XML映射:
<select id="findMusicByMusicName"resultType="com.example.musicplayer.model.Music">select * from music where title like concat('%',#{musicName},'%')</select><select id="findMusic" resultType="com.example.musicserver.model.Music">select * from music</select>
四、MusicController類新增?法
處理HTTP請求并調用Mapper操作:
????????音樂查詢接口
/**根據musicName查詢音樂@param musicName@return*/@RequestMapping("/findmusic")public ResponseBodyMessage<List<Music>> findMusic(@RequestParam(required=false)String musicName) {List<Music> musicList = null;if(musicName != null) {musicList = musicMapper.findMusicByMusicName(musicName);}else {//默認查詢全部的?樂musicList = musicMapper.findMusic();}return new ResponseBodyMessage<>(0,"查詢到了歌曲的信息",musicList);}
測試工作?
?
?代碼倉庫:查詢音樂接口開發 7.22音樂服務器 - Gitee.com