需求1:需要分页显示,我的课程,并且显示图片,(暂时不用显示图片)
要求做出来的效果:
上边的查询要实现分页、会存在多表关联查询,所以建议使用mybatis实现我的课程查询。
1.2 API 接口
输入参数:
页码、每页显示个数、查询条件
输出结果类型:
QueryResponseResult,这里面包括,操作状态的代码,和分页数据响应
@GetMapping("/coursebase/list/{
page}/{
size}")
//查询课程列表,参数为:当前页码,每页显示条数,和一个备用的扩展参数
QueryResponseResult findCourseList(int page, int size, CourseListRequest courseListRequest);
1.3课程管理服务
PageHelper 分页插件原理
参考使用的代码:注意,分页插件的起始页码是1,不是0
//用PageHelper查询课程列表的分页数据,参数为:当前页码,每页显示条数,扩展参数
public QueryResult<CourseInfo> findCourseList(int page, int size,CourseListRequest courseListRequest) {
if (courseListRequest==null){
//如果扩展参数为空,就new一个,免得后面取值出现报错
courseListRequest = new CourseListRequest();
}
if (page < 0){
//进来的页面,要是小于0,就是非法参数,默认查第一页
//PageHelper,的分页起始为1,不是0
page = 1;
}
if (size < 0){
//进来的显示条数,要是小于0,就是非法参数,默认查5条
size = 5;
}
//启动分页插件,并且设置页码和显示条数
PageHelper.startPage(page,size);
//执行写好的sql方法
Page<CourseInfo> courseListPage = courseMapper.findCourseList(courseListRequest);
//QueryResult<CourseInfo>组装这个返回的分页对象
//得到分页的数据集合
List<CourseInfo> courseInfoList = courseListPage.getResult();
//数据总条数
long total = courseListPage.getTotal();
QueryResult<CourseInfo> queryResult = new QueryResult<>();
queryResult.setTotal(total);
queryResult.setList(courseInfoList);
return queryResult;
}
开始搭建课程服务:
添加分页jar包
<!--mybatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
配置具体数据库的方言:
pagehelper: #指定分页插件使用的是什么数据库,好更换方言类型
helper‐dialect: mysql
写分页查询的Dao
//返回一个封装好的,page<CourseInfo>,CourseInfo是自定义的实体类,包含课程id,名称,图片
Page<CourseInfo> findCourseList(CourseListRequest courseListRequest);
写映射的mapper.xml:
<select id="findCourseList" parameterType="com.xuecheng.framework.domain.course.request.CourseListRequest"
resultType="com.xuecheng.framework.domain.course.ext.CourseInfo">
select a.id,a.name,b.pic from course_base as a left join course_pic as b on a.id = b.courseid
</select>
1.3.3 Service
定义CourseService.java类,用于课程管理的service定义:
//用PageHelper查询课程列表的分页数据,参数为:当前页码,每页显示条数,扩展参数
public QueryResult<CourseInfo> findCourseList(int page, int size,CourseListRequest courseListRequest) {
if (courseListRequest==null){
//如果扩展参数为空,就new一个,免得后面取值出现报错
courseListRequest = new CourseListRequest();
}
if (page < 0){
//进来的页面,要是小于0,就是非法参数,默认查第一页
//PageHelper,的分页起始为1,不是0
page = 1;
}
if (size < 0){
//进来的显示条数,要是小于0,就是非法参数,默认查5条
size = 5;
}
//启动分页插件,并且设置页码和显示条数
PageHelper.startPage(page,size);
//执行写好的sql方法
Page<CourseInfo> courseListPage = courseMapper.findCourseList(courseListRequest);
//QueryResult<CourseInfo>组装这个返回的分页对象
//得到分页的数据集合
List<CourseInfo> courseInfoList = courseListPage.getResult();
//数据总条数
long total = courseListPage.getTotal();
QueryResult<CourseInfo> queryResult = new QueryResult<>();
queryResult.setTotal(total);
queryResult.setList(courseInfoList);
return queryResult;
}
1.3.4 Controller
@GetMapping("/coursebase/list/{
page}/{
size}")
//查询课程列表,参数为:当前页码,每页显示条数,和一个备用的扩展参数
public QueryResponseResult findCourseList(@PathVariable("page") int page,@PathVariable("size"