Java的新项目学成在线笔记-day7(一)

1.1需求分析 
课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询。
注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示。
 
上边的查询要实现分页、会存在多表关联查询,所以建议使用mybatis实现我的课程查询。   1.2 PageHelper 
1.2.1 PageHelper介绍 
PageHelper是mybatis的通用分页插件,通过mybatis的拦截器实现分页功能,拦截sql查询请求,添加分页语句, 最终实现分页查询功能。
我的课程具有分页功能,本项目使用Pagehelper实现Mybatis分页功能开发,由于本项目使用springboot开发,在 springboot上集成pagehelper(https://github.com/pagehelper/pagehelper-spring-boot) PageHelper的使用方法及原理如下: 在调用dao的service方法中设置分页参数:PageHelper.startPage(page, size),分页参数会设置在ThreadLocal中

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

 
1.2.2 PageHelper配置 
1)添加依赖

1

2

3

4

<dependency>

   <groupId>com.github.pagehelper</groupId>   

 <artifactId>pagehelper‐spring‐boot‐starter</artifactId>

    <version>1.2.4</version> </dependency>


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

pagehelper: 
  helper‐dialect: mysq
2.3.3 PageHelper测试 
1)定义mapper 接口

1

2

3

4

5

6

7

8

9

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映射文件
 

1

2

3

4

5

6

<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
 

1

2

3

4

5

6

7

//测试分页 @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语句中已经包括分页语句。

猜你喜欢

转载自blog.csdn.net/czbkzmj/article/details/88182695