Mybatis:注解方式使用PageHeler分页插件

原有分页查询需要执行两条查询语句

SELECT * FROM video LIMIT 0,3

SELECT COUNT(*) FROM video

使用注解的方式完成PageHelper插件分页

dao层 就写一个最简单的查询语句就OK

    /**
     * 查询全部视频列表
     * @return
     */
    @Select("SELECT * FROM video")
    List<Video> listVideo();

Step1:引入依赖

  <!-- 分页插件依赖 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>4.1.0</version>
            </dependency>

Step2:引入配置类

/**
 * MyBatis分页插件配置
 */
@Configuration
public class MyBatisConfig {

    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();

        //设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
        p.setProperty("offsetAsPageNum","true");

        //设置为true时,使用RowBounds分页会进行count查询
        p.setProperty("rowBoundsWithCount","true");
        p.setProperty("reasonable","true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

Step3:控制层

/**
     * 分页查询视频列表
     * @param page 当前第几页   默认第一页
     * @param size 每页显示数量 默认10条
     * @return
     */
    @GetMapping("pageVideo")
    public Dto pageVideo(@RequestParam(value = "page",defaultValue = "1")int page,
                         @RequestParam(value = "size",defaultValue = "10")int size){
        PageHelper.startPage(page, size);
        //此处就是一个简单的查询全部语句
        List<Video> videoList = videoService.listVideo();

        //放入构造函数中
        PageInfo<Video> pageInfo = new PageInfo<>(videoList);

        return DtoUtil.returnDataSuccess(pageInfo);
    }

参数讲解

在这里插入图片描述

可以顶一个HashMap再封装一层,因为有很多参数前端是用不到的

PageHelper分页基本原理

sqlsessionFactory -> sqlSession-> executor(执行器,拼装sql) -> mybatis sql statement
            通过mybatis plugin 增加拦截器,然后拼装分页 覆盖原先生成的sql
            通过ThreadLocal获取用户变量
            org.apache.ibatis.plugin.Interceptor

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/q736317048/article/details/111678754
今日推荐