基于SpringBoot的online_music_player(查询喜欢的音乐)

152 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情 

查询喜欢的音乐列表

这里的查询喜欢列表和查询音乐模块类似!

  • 未给定歌曲名称

    查询该用户所有收藏歌曲

  • 给定歌曲名称参数

    查询歌曲名称含有该参数的歌曲

请求和响应设计

请求:
{
    get
    /lovemusic/findloveMusic
    data:{musicName:musicName}
}
响应:
{
    status:0,
    message:"查询到收藏的音乐",
    data:
    {
        {
            id:1,
            title:"隆里电丝",
            singer:"大傻",
            time:"2022年8月2日",
            url:"/music/get?path=隆里电丝",
            user_id:2
        }
        ...
    }
}

代码实现

  • LoveMusicMapper接口新增方法
   /**
     * 查询该用户所有的收藏歌曲
     * @param user_id
     * @return
     */
    List<Music> findLoveMusic(int user_id);
​
    /**
     * 通过用户id和歌曲名称查询收藏歌曲支持模糊匹配
     * @param user_id
     * @param musicName
     * @return
     */
    List<Music> findLoveMusicByUidAndMusicName(int user_id,String musicName);
​
  • xml实现接口方法
 <!--在该用户id下通过歌曲名称查询歌曲(支持模糊查询)-->
    <select id="findLoveMusicByUidAndMusicName" resultType="com.example.onlinemusic.model.Music">
        select m.* from music as m, lovemusic as lm where m.id = lm.music_id
            and lm.user_id = #{user_id} and m.title like concat('%',#{musicName},'%')
    </select>
    <!--通过id查询收藏列表-->
    <select id="findLoveMusicById" resultType="com.example.onlinemusic.model.LoveMusic">
        select * from lovemusic where id = #{id}
    </select>
  • LoveMusicController代码实现
   //通过音乐名称查询收藏列表
    @RequestMapping("/findloveMusic")
    public ResponseBodyMessage<List<Music>>
    findLoveMusicByUidAndMusicName(@RequestParam(required = false) String musicName,
                                   HttpServletRequest request){
        //1.检查登入状态,未登入不创建回话
        HttpSession session = request.getSession(false);
        if(session==null||null==request.getSession().getAttribute(Contant.USERINFO_SESSION_KEY)){
            //未登入状态
            return new ResponseBodyMessage<>(-1,"请登入用户",null);
        }
        //登入状态,进行音乐查询
        //1.获取到用户id
        User user = (User)session.getAttribute(Contant.USERINFO_SESSION_KEY);
        int user_id = user.getId();
        System.out.println("user_id:"+user_id+" musicName:"+musicName);
        //2.查询收藏列表
        List<Music> musicList = null;
        if(musicName==null){
            //2.1歌曲名称为空,查询该用户所有收藏歌曲!
           musicList = loveMusicMapper.findLoveMusic(user_id);
           return new ResponseBodyMessage<>(0,"查询到收藏列表",musicList);
        }
        //2.2 歌曲名称不为空,模糊查询
        musicList = loveMusicMapper.findLoveMusicByUidAndMusicName(user_id,musicName);
        return new ResponseBodyMessage<>(0,"查询收藏列表成功",musicList);
    }
​

验证结果

数据库信息:

image-20220802002411320

登入user_di=10的用户

  • 查询该用户所有收藏歌曲

image-20220802002254427

  • 模糊匹配查询指定歌曲

image-20220802002636445