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>活 ...
随机推荐
- leaflet 在地图上创建marker标记
<!DOCTYPE html> <html> <head> <title>Layers Control Tutorial - Leaflet</t ...
- Java面试题:@PostConstruct、init-method和afterPropertiesSet执行顺序?
在Spring框架中,@PostConstruct注解.init-method属性.以及afterPropertiesSet()方法通常用于初始化Bean的逻辑.它们都提供了在Bean创建和初始化完成 ...
- threejs的坐标渲染和着色
点击查看代码 function createBasic() { // 目标:了解顶点坐标绘制正方形 // 1. 准备 BufferGemotry 缓冲几何图形 // 2. 准备 32 位浮点数的数组, ...
- 一个网格合并(weld)小工具
在日常开发中会有需求合并多个Mesh网格,并且它们重合处的顶点也要合并,而并非合并成两个subMesh. 而近期刚好在学习Geomipmap的细分,需要把多个mesh块进行合并,于是写了这个脚本 (简 ...
- JDK源码阅读-------自学笔记(三)(java.lang.String String用法和描述浅析)
一.源码特点 final约束,使得String不能被继承,内部其他也不能被继承 String用来表示字符串,或字符序列,序列即为数组 内建数组private final char value[];但是 ...
- Python:用Pandas输出格式化HTML并高亮
输出格式化的HTML 我们已知一个DataFrame记录了模型Model1.Model2在3个Epoch优化中的精度变化情况: frame = pd.DataFrame({"Model1&q ...
- 【winform】【Socket】实现你画我猜一:核心功能开发
我认为得核心:是把客户端画的图画实时传递给其他的客户端. 我的思路是: 1.GDI+绘图加鼠标事件,实现客户端绘图. 2.每记录鼠标有效绘图10个点,就把这10个点通过socket传递给服务器. ...
- 一个IDEA界面如何同时打开多个项目
第一步:先导入其中一个工程 第二步:点击File->Project Structure 第三步:导入模块 最后点击Apply即可完成一个IDEA界面同时打开多个项目的需求.
- java stream 简单函数
写在前面 本文为笔者学习的一些心得,如有问题,评论请轻喷 本文分为以下部分: 中间操作 终止操作 归纳 中间操作 对 list 进行操作,返回一个新的 list 主要函数 作用 filter 过滤操作 ...
- 互联网软件的安装包界面设计-Inno setup
https://blog.csdn.net/oceanlucy/article/details/50033773 "安装界面太丑了,不堪入目!" "这界面应该属于20年代 ...