携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情
查询音乐模块
我们的查询需要支持一下功能
-
查询给定名称的歌曲
-
给定歌曲名称全
查询到单个歌曲
-
给定名称字段(支持模糊匹配查询)
查询到多个歌曲
-
-
未给定歌曲名
就查询所有歌曲
请求响应设计
请求:
{
get
/music/findMusic
musicName
}
响应:
{
status:0
message:"查询成功"
data:
{
{
id:2
title:"隆里电丝"
singer:"大傻"
time:"2022年8月1日"
url:/music/get?path="隆里电丝"
},
....
}
}
代码实现
-
MusicMapper接口新增方法- 查询所有音乐
- 模糊匹配查询某些音乐
/**
*查询所有歌曲
* @return
*/
List<Music> findMusic();
/**
* 通过名称查询到歌曲信息,支持模糊查询
* @return
*/
List<Music> findMusicByName(String musicName);
MusicMapper.xml实现
<!--查询所有歌曲-->
<select id="findMusic" resultType="com.example.onlinemusic.model.Music">
select * from music;
</select>
<!--模糊查询指定歌曲-->
<select id="findMusicByName" resultType="com.example.onlinemusic.model.Music">
select * from music where title like concat('%',#{musicName},'%')
</select>
MusicController实现
//模糊查询
@RequestMapping("/findMusic")
public ResponseBodyMessage<List<Music>> findMusic(@RequestParam(required =false) String musicName){
List<Music> musicList = new LinkedList<>();
if(musicName==null){
//查询名称为空,查询所有音乐返回
musicList = musicMapper.findMusic();
return new ResponseBodyMessage<>(0,"查询成功!",musicList);
}
//进行模糊查询!
musicList = musicMapper.findMusicByName(musicName);
return new ResponseBodyMessage<>(0,"查询成功!",musicList);
}
验证结果
- 查询名称为空
-
模糊查询
收藏音乐模块
添加音乐到收藏列表
请求响应设计
请求:
{
post,
/lovemusic/likeMusic
data:user_id,music_id
}
响应:
{
status:0,
message:"收藏音乐成功",
data:true
}
代码实现
我们要将一首音乐收藏分为2步
- 找到该音乐信息,判断是否收藏过(查询
lovemusic表)- 收藏该音乐(添加到
lovemusic表)
- 新增
LoveMusicMapper接口
package com.example.onlinemusic.mapper;
import com.example.onlinemusic.model.LoveMusic;
import org.apache.ibatis.annotations.Mapper;
/**
* Created with IntelliJ IDEA.
* Description:
* User: hold on
* Date: 2022-08-01
* Time: 19:54
*/
@Mapper
public interface LoveMusicMapper {
/**
* 通过用户id和音乐id查询喜欢音乐
* @param user_id
* @param music_id
* @return
*/
LoveMusic findLoveMusicByUidAndMusicId(int user_id, int music_id);
/**
* 添加音乐到收藏列表
* @param user_id
* @param music_id
* @return
*/
int insetLoveMusic(int user_id,int music_id);
}
LoveMusicMapper.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.example.onlinemusic.mapper.LoveMusicMapper">
<!--添加音乐到收藏列表-->
<insert id="insetLoveMusic">
insert into lovemusic (user_id,music_id) values(#{user_id},#{music_id})
</insert>
<!--通过用户id和音乐id查询收藏列表-->
<select id="findLoveMusicByUidAndMusicId" resultType="com.example.onlinemusic.model.LoveMusic">
select * from lovemusic where
user_id = #{user_id} and music_id = #{music_id}
</select>
</mapper>
LoveMusicController代码实现
package com.example.onlinemusic.controller;
import com.example.onlinemusic.mapper.LoveMusicMapper;
import com.example.onlinemusic.model.Contant;
import com.example.onlinemusic.model.LoveMusic;
import com.example.onlinemusic.model.User;
import com.example.onlinemusic.tools.ResponseBodyMessage;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* Created with IntelliJ IDEA.
* Description:
* User: hold on
* Date: 2022-08-01
* Time: 20:25
*/
@RestController
@RequestMapping("/lovemusic")
public class LoveMusicController {
//注入LoveMusicMapper
@Resource
private LoveMusicMapper loveMusicMapper;
//收藏音乐
@RequestMapping("/likeMusic")
public ResponseBodyMessage<Boolean> insertLoveMusic(@RequestParam Integer id,HttpServletRequest request){
//1.检查登入状态,未登入不创建回话
HttpSession session = request.getSession(false);
if(session==null||null==request.getSession().getAttribute(Contant.USERINFO_SESSION_KEY)){
//未登入状态
return new ResponseBodyMessage<>(-1,"请登入用户",false);
}
//登入状态,进行音乐收藏
//1.获取到用户id
User user = (User)session.getAttribute(Contant.USERINFO_SESSION_KEY);
int user_id = user.getId();
System.out.println("user_id:"+user_id+" music_id:"+id);
//2.查询该歌曲是否已存在收藏列表
LoveMusic loveMusic = loveMusicMapper.findLoveMusicByUidAndMusicId(user_id,id);
if(loveMusic!=null){
//该歌曲已收藏!
System.out.println("lovemusic:"+loveMusic);
return new ResponseBodyMessage<>(-1,"收藏失败,该歌曲收藏",false);
}
//未收藏,将其收藏!
int flg = loveMusicMapper.insetLoveMusic(user_id,id);
if(flg!=1){
return new ResponseBodyMessage<>(-1,"收藏失败",false);
}
return new ResponseBodyMessage<>(0,"收藏成功!",true);
}
}
验证结果
- 歌曲已收藏,收藏失败
- 歌曲未收藏,收藏成功