yb课堂实战之首页banner轮播图和视频详情接口开发 《四》
开发轮播列表接口
VideoMapper.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="net.ybclass.online_ybclass.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>
</mapper>
VideoMapper.java
package net.ybclass.online_ybclass.mapper; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.domain.VideoBanner; import java.util.List;
public interface VideoMapper {
/**
* 查询视频列表
* @return
*/
List<Video> ListVideo(); /**
* 首页轮播图列表
* @return
*/
List<VideoBanner> ListVideoBanner();
}
VideoService.jva
package net.ybclass.online_ybclass.service; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.domain.VideoBanner; import java.util.List; public interface VideoService {
List<Video> listVideo(); List<VideoBanner> listBanner();
}
VideoServiceImpl.java
package net.ybclass.online_ybclass.service.impl; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.domain.VideoBanner;
import net.ybclass.online_ybclass.mapper.VideoMapper;
import net.ybclass.online_ybclass.service.VideoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List;
@Service
public class VideoServiceImpl implements VideoService {
@Autowired(required = false)
private VideoMapper videoMapper; /**
* 视频列表
* @return
*/
@Override
public List<Video> listVideo() {
return videoMapper.ListVideo();
} /**
* 首页轮播图列表
* @return
*/
@Override
public List<VideoBanner> listBanner() {
return videoMapper.ListVideoBanner();
}
}
VideoController.java
package net.ybclass.online_ybclass.controller; import net.ybclass.online_ybclass.service.VideoService;
import net.ybclass.online_ybclass.utils.JsonData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("api/v1/pub/video")
public class VideoController {
@Autowired(required = false)
private VideoService videoService; /**
* 视频列表
* @return
*/
@RequestMapping("list")
public Object ListVideo() {
return JsonData.buildSuccess(videoService.listVideo()) ;
} /**
* 首页轮播图列表
* @return
*/
@GetMapping("list_banner")
public JsonData indexBanner(){
return JsonData.buildSuccess(videoService.listBanner());
}
}
视频详情接口开发
- 修改Video-Chapter POJO类,增加属性(不使用DTO)


- 定义ResultMap
<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="point" jdbcType="DOUBLE" property="point"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<collection property="chapterList" ofType="Chapter">
<id column="chapter_id" jdbcType="INTEGER" property="id"/>
<result column="chapter_title" jdbcType="VARCHAR" property="title"/>
<result column="ordered" jdbcType="INTEGER" property="ordered"/>
<result column="chapter_create_time" jdbcType="TIMESTAMP" property="createTime"/>
<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="chapter_id" jdbcType="INTEGER" property="chapterId"/>
<result column="video_id" jdbcType="INTEGER" property="videoId"/>
<result column="play_url" jdbcType="VARCHAR" property="playUrl"/>
<result column="free" jdbcType="INTEGER" property="free"/>
<result column="play_create_time" jdbcType="TIMESTAMP" property="createTime"/>
</collection>
</collection>
</resultMap>
<select id="findDetailById" resultMap="videoDetailResultMap">
SELECT v.id,v.title,v.summary,v.cover_img,v.price,v.create_time,v.point,
c.id chapter_id,c.video_id,c.title chapter_title,c.ordered,c.create_time chapter_create_time,
e.id episode_id,e.num,e.chapter_id,e.video_id,e.title episode_title,e.ordered episode_ordered,e.play_url,e.free,e.create_time play_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
VideoController.java
package net.ybclass.online_ybclass.controller; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.service.VideoService;
import net.ybclass.online_ybclass.utils.JsonData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("api/v1/pub/video")
public class VideoController {
@Autowired(required = false)
private VideoService videoService; /**
* 视频列表
* @return
*/
@RequestMapping("list")
public JsonData ListVideo() {
return JsonData.buildSuccess(videoService.listVideo()) ;
} /**
* 首页轮播图列表
* @return
*/
@GetMapping("list_banner")
public JsonData indexBanner(){
return JsonData.buildSuccess(videoService.listBanner());
} /**
* 查询视频详情,包含章,集信息
* @param videoId
* @return
*/
@GetMapping("find_detail_by_id")
public JsonData findDetailById(@RequestParam(value = "video_id",required = true)int videoId){
return JsonData.buildSuccess(videoService.findDetailById(videoId));
}
}
VideoServicce.java
package net.ybclass.online_ybclass.service; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.domain.VideoBanner; import java.util.List; public interface VideoService {
List<Video> listVideo(); List<VideoBanner> listBanner(); Video findDetailById(int videoId);
}
VideoServiceImpl.java
package net.ybclass.online_ybclass.service.impl; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.domain.VideoBanner;
import net.ybclass.online_ybclass.mapper.VideoMapper;
import net.ybclass.online_ybclass.service.VideoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List;
@Service
public class VideoServiceImpl implements VideoService {
@Autowired(required = false)
private VideoMapper videoMapper; /**
* 视频列表
* @return
*/
@Override
public List<Video> listVideo() {
return videoMapper.ListVideo();
} /**
* 首页轮播图列表
* @return
*/
@Override
public List<VideoBanner> listBanner() {
return videoMapper.ListVideoBanner();
} /**
* 视频详情
* @param videoId
* @return
*/
@Override
public Video findDetailById(int videoId) {
// 需要使用Mybatis关联复杂查询
return videoMapper.findDetailById(videoId);
}
}
VideoMapper.java
package net.ybclass.online_ybclass.mapper; import net.ybclass.online_ybclass.domain.Video;
import net.ybclass.online_ybclass.domain.VideoBanner;
import org.apache.ibatis.annotations.Param; import java.util.List;
public interface VideoMapper {
/**
* 查询视频列表
* @return
*/
List<Video> ListVideo(); /**
* 首页轮播图列表
* @return
*/
List<VideoBanner> ListVideoBanner(); /**
* 查询视频详情
* @param videoId
* @return
*/
Video findDetailById(@Param("video_id") int videoId);
}
VideoMapper.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="net.ybclass.online_ybclass.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="point" jdbcType="DOUBLE" property="point"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<collection property="chapterList" ofType="Chapter">
<id column="chapter_id" jdbcType="INTEGER" property="id"/>
<result column="chapter_title" jdbcType="VARCHAR" property="title"/>
<result column="ordered" jdbcType="INTEGER" property="ordered"/>
<result column="chapter_create_time" jdbcType="TIMESTAMP" property="createTime"/>
<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="chapter_id" jdbcType="INTEGER" property="chapterId"/>
<result column="video_id" jdbcType="INTEGER" property="videoId"/>
<result column="play_url" jdbcType="VARCHAR" property="playUrl"/>
<result column="free" jdbcType="INTEGER" property="free"/>
<result column="play_create_time" jdbcType="TIMESTAMP" property="createTime"/>
</collection>
</collection>
</resultMap>
<select id="findDetailById" resultMap="videoDetailResultMap">
SELECT v.id,v.title,v.summary,v.cover_img,v.price,v.create_time,v.point,
c.id chapter_id,c.video_id,c.title chapter_title,c.ordered,c.create_time chapter_create_time,
e.id episode_id,e.num,e.chapter_id,e.video_id,e.title episode_title,e.ordered episode_ordered,e.play_url,e.free,e.create_time play_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>
yb课堂实战之首页banner轮播图和视频详情接口开发 《四》的更多相关文章
- jQuery与原生js实现banner轮播图
jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...
- 用JavaScript制作banner轮播图
JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...
- 原生无缝Banner轮播图
话不多说,先展示效果图.由于录制工具,稍显卡顿,实际是流畅的.可以看到实现了无缝轮播,鼠标悬停,点击左右上下按钮切换Banner的功能,如图1所示. 图1 原生无缝banner效果展示 以我这个轮播图 ...
- 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)
接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着 ...
- Luffy之Xadmin以及首页搭建(轮播图,导航)
1. 首页 1.1 轮播图 admin站点配置支持图片上传 pip install Pillow 默认情况下,Django会将上传的图片保存在本地服务器上,需要配置保存的路径.我们可以将上传的文件保存 ...
- 安卓开发笔记(三十二):banner轮播图的实现
一.activity.xml 我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间. < ...
- phpcms首页实现轮播图
1.在你想要加轮播图的位置加入以下 <div id="flowDiagram" > <div id="button"> <span ...
- 手机端Zepto框架,利用swipejs插件做banner轮播图
一,HTML部分<div class="banner"> <div id="slider" class="swipe"&g ...
- 如何使用微信小程序制作banner轮播图?
在前端工程师的工作中,banner是必不可少的,那缺少了DOM的小程序是如何实现banner图的呢?如同其他的框架封装了不同的banner图的方法,小程序也封装了banner的方法,来让我一一道来: ...
- 带同时滚动小色条的banner轮播图jq
<div class="baoliao tongcheng"> <p class="headline1">同城<font>活 ...
随机推荐
- 🔥fastposter v2.19.0 一款很哇塞的海报生成器
fastposter v2.19.0 一款很哇塞的海报生成器 fastposter 是一款快速开发海报的工具,已经服务众多电商.分销系统.电商海报.电商主图.行业海报等海报生成和制作场景. 什么是 f ...
- 每天上一当系列之vue修饰符.number
今天使用number修饰符去处理el-input的内容为数字做校验原本以为省事不少,没想到,为0开头无法输入第二位以后,并且输入的比较多的时候会出现Infinity 很神奇,网上查了说是element ...
- Splashtop :符合 HIPAA 标准的远程桌面软件
如果您正在寻找可帮助您保持 HIPAA 遵从性的远程桌面软件,那么 Splashtop 就是您的最佳选择. 如果您的公司属于美国医疗保健行业,则您知道您必须遵守有关敏感和私人患者信息的联邦 HIPAA ...
- 用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能
OA办公中,业务需要编辑word文档,需要插入另外word文档的功能. 怎么实现编辑word文档插入另外word文档呢? 2 实现方法 通过pageOffice实现简单的在线打开编辑word时, 通过 ...
- python的requests模块详解
原文链接:https://www.cnblogs.com/lanyinhao/p/9634742.html 1.模块说明 requests是使用Apache2 licensed 许可证的HTTP库. ...
- PHP常用排序算法01——冒泡、插入
对于排序算法,相信学计算机的同学都不会陌生.今天我们就来复习下常见的两个排序,适合小规模数据的排序算法:冒泡(bubbleSort)和插入(insertionSort). PS:对排序等算法还不太了解 ...
- IceRPC之调度管道->快乐的RPC
作者引言 很高兴啊,我们来到了IceRPC之调度管道->快乐的RPC, 基础引导,有点小压力,打好基础,才能让自已不在迷茫,快乐的畅游世界. 调度管道 Dispatch pipeline 了解如 ...
- 【WPF】自定义数据集合绑定到UI界面
需要展示列表项,从https://github.com/jdscodelab/File-Manager-UI-Wpf这个项目,只有前端UI. 复用了其文件内容列表 主要源码: <StackP ...
- Python 爬虫神器 requests 工具
一.模块安装 pip install requests 二.常用方法 在实际的爬虫中,其实真正用到的只有 GET.POST,像其他的方法基本用不到,比如:DELETE.HEAD.PUT 等. 1.GE ...
- 用Yacht管理docker容器
今天是六一儿童节,祝大小朋友们节日快乐! 从今天开始起,防范区的上海市民可以自由出入小区了.始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常. 周一上午的的核酸可能是我们最后一次 ...