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>活 ...
随机推荐
- 基于FPGA的电子琴设计(按键和蜂鸣器)----第一版
欢迎各位朋友关注"郝旭帅电子设计团队",本篇为各位朋友介绍基于FPGA的电子琴设计(按键和蜂鸣器)----第一版. 功能说明: 外部输入七个按键,分别对应音符的"1.2. ...
- 联网安装与源码安装mysql
一.卸载mariadb的rpm包 1.首先,你需要找出已安装的MariaDB包的具体名称.可以使用以下命令列出所有已安装的MariaDB包: rpm -qa | grep mariadb 2.删除命令 ...
- C# EF 使用sqlite 数据库出现表名出现dbo的坑
当ef使用sqlite时,正常情况映射的表名是没有dbo开头的.这个dbo是映射的sa用户,而sqlite是没有用户的.所以映射出的sql语句是查不到数据的. 我在网上找半天解决方案,都不得行.后 ...
- H264 H265 分析小工具
1.在调试 H264 H265 编码的流数据的时候,有时候需要打印没有nalu的类型和数量,自己写了一个小工具 使用方式: p.p1 { margin: 0; font: 22px Menlo; co ...
- windows下vscode连接linux(虚拟机)进行(伪)远程开发
免责声明 本文乃至本系列是对网络上传播的内容进行整理以梳理流程,且因为篇幅限制会精简内容,适合面向具有计算机类基础知识的人群,本文内容较为笼统,只有大体上的逻辑,具体的细节肯定是官网上写的准而全,望读 ...
- itest(爱测试) 4.5.1 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
本次发布一共6个更新(其中一个4.5.0的重大BUG,不得不先发布4.5.1).4.5.0中增加ldap 登录支持时,引入一个BUG,新增的itest本地用户不能登录,除非重启. V4.5.1详情如 ...
- wordpress 折腾记
今天我看到一篇个人博客,我想建个人网站的心又动了. 虽说博客园已经很符合我的预期了,但我还是一直很想做一个个人网站做一些个性化的东西,今天试试用用wordpress搭建一个wordpress网站 介绍 ...
- WIn32 C++ 消息处理函数 问题
这个消息处理这个 Winproc 这个 接收到网络信息 在自己的函数用完后可以选择向系统路由传递这个网络消息接收到的数据原型 你处理完,系统也处理,不想让系统处理可以不将接受到的那几个变量啊数据啊,就 ...
- keepalived高可用性负载均衡
软件官网 http://www.keepalived.org/ 为什么需要keepalived 上图明显看出,LB机器应该是双节点,否则出现单点故障的问题,并且LB作为网站的入口,显然要提供高可用性的 ...
- java怎样把两个list里边相同的数据取出
1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class I { 5 6 public static void m ...