A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】学成在线 第7天 讲义-课程管理实战 一

1 我的课程
1.1需求分析
课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询。
注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示。

上边的查询要实现分页、会存在多表关联查询,所以建议使用mybatis实现我的课程查询。
1.2 PageHelper
1.2.1 PageHelper介绍
PageHelpermybatis的通用分页插件,通过mybatis的拦截器实现分页功能,拦截sql查询请求,添加分页语句,最终实现分页查询功能。
我的课程具有分页功能,本项目使用Pagehelper实现Mybatis分页功能开发,由于本项目使用springboot开发,在springboot上集成pagehelperhttps://github.com/pagehelper/pagehelper-spring-bootPageHelper的使用方法及原理如下:
在调用daoservice方法中设置分页参数:PageHelper.startPage(page, size),分页参数会设置在ThreadLocal

PageHelpermybatis执行sql前进行拦截,从ThreadLocal取出分页参数,修改当前执行的sql语句,添加分页sql
最后执行添加了分页sqlsql语句,实现分页查询。


1.2.2 PageHelper配置
1)添加依赖
[AppleScript] 纯文本查看 复制代码
 <dependency>
<groupId>com.
github.
pagehelper</groupId>
<artifactId>pagehelper
‐
spring
‐
boot
‐
starter</artifactId>
<version>1.2.4</version>
</dependency> 


2)配置pageHelper
application.yml中配置pageHelper操作的数据库类型:

[AppleScript] 纯文本查看 复制代码
pagehelper:
helper
‐
dialect: mysql

2.3.3 PageHelper测试
1)定义mapper 接口

[AppleScript] 纯文本查看 复制代码
import com.
github.
pagehelper.Page;
import com.xuecheng
.framework.domain.course.CourseBase;
import com.xuecheng
.framework.domain.course.ext.CourseInfo;
import com.xuecheng
.framework.domain.course.request.CourseListRequest;
import org
.apache.ibatis.annotations.Mapper;
@Mapper
public interface CourseMapper {
CourseBase findCourseBaseById(String id);
Page<CourseInfo> findCourseListPage(CourseListRequest courseListRequest);
}

2)定义mapper.xml映射文件

[AppleScript] 纯文本查看 复制代码
<select id
=
"
findCourseListPage
"
resultType
=
"
com.xuecheng
.framework.domain.course.ext.CourseInfo
"
parameterType
=
"
com.xuecheng
.framework.domain.course.request.CourseListRequest
"
>
SELECT
course_base.*
,
(SELECT pic FROM course_pic WHERE courseid
=
course_base.id) pic
FROM
course_base
</select> 

3)测试Dao
[AppleScript] 纯文本查看 复制代码
 //测试分页
@Test
public void testPageHelper(){
PageHelper.startPage(1, 10);//查询第
一
页,每页显示10条记录
CourseListRequest courseListRequest
= new CourseListRequest();
Page<CourseInfo> courseListPage
=
courseMapper.findCourseListPage(courseListRequest);
List<CourseInfo> result
=
courseListPage.
getResult();
System.out.
println(courseListPage);
}


测试前修改日志级别为debug,并跟踪运行日志,发现sql语句中已经包括分页语句。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马