开发轮播列表接口

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轮播图和视频详情接口开发 《四》的更多相关文章

  1. jQuery与原生js实现banner轮播图

    jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...

  2. 用JavaScript制作banner轮播图

    JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...

  3. 原生无缝Banner轮播图

    话不多说,先展示效果图.由于录制工具,稍显卡顿,实际是流畅的.可以看到实现了无缝轮播,鼠标悬停,点击左右上下按钮切换Banner的功能,如图1所示. 图1 原生无缝banner效果展示 以我这个轮播图 ...

  4. 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着 ...

  5. Luffy之Xadmin以及首页搭建(轮播图,导航)

    1. 首页 1.1 轮播图 admin站点配置支持图片上传 pip install Pillow 默认情况下,Django会将上传的图片保存在本地服务器上,需要配置保存的路径.我们可以将上传的文件保存 ...

  6. 安卓开发笔记(三十二):banner轮播图的实现

    一.activity.xml 我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间. < ...

  7. phpcms首页实现轮播图

    1.在你想要加轮播图的位置加入以下 <div id="flowDiagram" > <div id="button"> <span ...

  8. 手机端Zepto框架,利用swipejs插件做banner轮播图

    一,HTML部分<div class="banner"> <div id="slider" class="swipe"&g ...

  9. 如何使用微信小程序制作banner轮播图?

    在前端工程师的工作中,banner是必不可少的,那缺少了DOM的小程序是如何实现banner图的呢?如同其他的框架封装了不同的banner图的方法,小程序也封装了banner的方法,来让我一一道来: ...

  10. 带同时滚动小色条的banner轮播图jq

    <div class="baoliao tongcheng"> <p class="headline1">同城<font>活 ...

随机推荐

  1. 用 C 语言开发一门编程语言 — Q-表达式

    目录 文章目录 目录 前文列表 Q-表达式 读取并存储输入 实现 Q-Expression 语法解析器 读取 Q-Expression 实现 Q-Expression 的函数 Head & T ...

  2. mogodb replication set复制集

    replication set复制集 简要命令 replication set复制集 replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性. Replication se ...

  3. MPI学习笔记(四):矩阵相乘的Cannon卡农算法

    mpi矩阵乘法:C=αAB+βC 一.Cannon卡农算法基本介绍 1.二维矩阵串行乘法 两个n维方阵的乘法A×B=C的串行计算公式为: 下图是用图示来表示的这种计算规则: 2.二维块划分的思想 并行 ...

  4. HTML——form表单

    表单主要是用来收集客户端提供的相关信息,提供了用户数据录入的方式,有多选.单选.单行文本.下拉列表等输入框,便于网站管理员收集用户的数据,是Web浏览器和Web服务器之间实现信息交流和数据传递的桥梁. ...

  5. OpenQA.Selenium.WebDriverException The HTTP request to the remote WebDriver server for URL timed out

    OpenQA.Selenium.WebDriverException:"The HTTP request to the remote WebDriver server for URL htt ...

  6. svg动画导致持续占用CPU

    1.在一次性能优化中突然发现一个svg矢量图动画导致CPU持续占用的问题,该svg在web中使用, 即使webview释放之后,CPU依然占用达到10%,6s+上测试结果 svg如下所示: <s ...

  7. 『手撕Vue-CLI』获取下载目录

    开篇 在上一篇文章中,简单的对 Nue-CLI 的代码通过函数柯里化优化了一下,这一次来实现一个获取下载目录的功能. 背景 在 Nue-CLI 中,我现在实现的是 create 指令,这个指令本质就是 ...

  8. 自定义动画 jquery的结束动画

      <button name="width">改变宽</button>     <button name="height"> ...

  9. jquery浏览器的上卷高度 节点的创建和写入 节点的删除

    // js 的兼容语法         // let scrollT = document.documentElement.scrollTop || document.body.scrollTop; ...

  10. 剑指Offer-67.剪绳子(C++/Java)

    题目: 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x...xk[m ...