项目第一章第4节--获取首页banner轮播图和视频详情接口

第一步:编写controller层:VideoController

@RestController
@RequestMapping("api/v1/pub/video")
public class VideoController {
    @Autowired
    private VideoService videoService;
	
	/**
     * 查询视频列表
     * @return
     */
    @RequestMapping("list")
    public JsonData listVideo(){

        List<Video> list=videoService.listVideo();
        return JsonData.buildSuccess(list);
    }
    
    /**
     * 查询轮播图
     * @return
     */
    @GetMapping("list_banner")
    public JsonData listVideoBanner(){
        List<VideoBanner> list=videoService.listVideoBanner();
        return JsonData.buildSuccess(list);
    }
    /**
     * 查询视频详情,包含章集信息
     * @param videoId
     * @return
     */
    @GetMapping("find_detail_by_id")
    /**
     * 参数必须有值没有则抛出异常
     */
    public JsonData findDetailById(@RequestParam(value = "video_id",required = true)int videoId){
        Video video=videoService.findDetailById(videoId);
        return JsonData.buildSuccess(video);
    }
}

第二步:根据编写的查询方法名到service层(VideoService)创建对应的抽象方法

public interface VideoService {
	//上一章创建的
    List<Video> listVideo();

    List<VideoBanner> listVideoBanner();

    Video findDetailById(int videoId);
}

第三步:去实现类(VideoServiceImpl)重写对应的方法

@Service
public class VideoServiceImpl implements VideoService {

    @Autowired
    private VideoMapper videoMapper;

    @Override
    public List<Video> listVideo() {
        return videoMapper.listVideo();
    }

    @Override
    public List<VideoBanner> listVideoBanner() {
        return videoMapper.listVideoBanner();
    }

    @Override
    public Video findDetailById(int videoId) {
        Video video=videoMapper.findDetailById(videoId);
        return video;
    }
}

第五步:去mapper层中(VideoMapper)接口创建对应的抽象方法

public interface VideoMapper {

    /**
     * 查询全部视频列表
     * @return
     */
    List<Video> listVideo();

    /**
     * 首页轮播图
     * @return
     */
    List<VideoBanner> listVideoBanner();

    /**
     * 查询视频详情
     * @param videoId
     * @return
     */
    Video findDetailById(@Param("video_id") int videoId);
}

第六步:到resource包下的mapper包的VideoMapper.xml创建与接口对应的数据库操作
(前两行为固定写法可复制粘贴,namespace填写:mapper层对应的接口)

<?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="work.yspan.online.mapper.VideoMapper">

    <select id="listVideo" resultType="Video">
        select * from video
    </select>

    <select id="listVideoBanner" resultType="VideoBanner">
        select * from video_banner order by weight asc
    </select>
    
   <resultMap id="VideoDetailResultMap" type="Video">
       <id column="id" jdbcType="INTEGER" property="id"/>
       <result column="title" jdbcType="VARCHAR" property="title"/>
       <result column="summary" jdbcType="VARCHAR" property="summary"/>
       <result column="cover_img" jdbcType="VARCHAR" property="coverImg"/>
       <result column="price" jdbcType="INTEGER" property="price"/>
       <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
       <result column="point" jdbcType="DOUBLE" property="point"/>

       <!--private List<Chapter> chapterList;-->
       <collection property="chapterList" ofType="Chapter">
           <id column="chapter_id" jdbcType="INTEGER" property="id"/>
           <!--<result column="video_id" jdbcType="INTEGER" property="videoId"/>-->
           <result column="chapter_title" jdbcType="VARCHAR" property="title"/>
           <result column="chapter_ordered" jdbcType="INTEGER" property="ordered"/>
           <result column="chapter_create_time" jdbcType="TIMESTAMP" property="createTime"/>

           <!--private List<Episode> episodeList;-->
           <collection property="episodeList" ofType="Episode">
               <id column="episode_id" jdbcType="INTEGER" property="id"/>
               <result column="episode_title" jdbcType="VARCHAR" property="title"/>
               <result column="num" jdbcType="INTEGER" property="num"/>
               <result column="episode_ordered" jdbcType="INTEGER" property="ordered"/>
               <result column="play_url" jdbcType="VARCHAR" property="playUrl"/>
               <!--<result column="chapter_id" jdbcType="INTEGER" property="chapterId"/>-->
               <result column="free" jdbcType="INTEGER" property="free"/>
               <!--<result column="video_id" jdbcType="INTEGER" property="videoId"/>-->
               <result column="episode_create_time" jdbcType="TIMESTAMP" property="createTime"/>
           </collection>
       </collection>
   </resultMap>

    <!--Video findDetailById(@Param("video_id") int videoId);-->
    <select id="findDetailById" resultMap="VideoDetailResultMap">
        select v.id,v.title,v.summary,v.cover_img,v.price,v.create_time,v.point,
        c.id as chapter_id,c.title as chapter_title,c.ordered as chapter_ordered,c.create_time as chapter_create_time,
        e.id as episode_id,e.num,e.title as episode_title,e.ordered as episode_ordered,e.play_url,e.free,e.create_time as episode_create_time
        from video v
        left join chapter c on v.id=c.video_id
        left join episode e on c.id=e.chapter_id
        where v.id=#{video_id}
        order by c.ordered,e.num asc
    </select>

</mapper>

效果截图:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值