pageHelper分页插件使用

1.摘要pageHelper:

com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件。

PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美。

原本以为分页插件,应该是很简单的,然而PageHelper比我想象的要复杂许多,它做的很强大,也很彻底,强大到使用者可能并不需要这么多功能,彻底到一参可以两用。但是,我认为,作为分页插件,完成物理分页任务是根本,其它的很多智能并不是必要的,保持它够傻够憨,专业术语叫stupid,简单就是美。

官方网址:https://pagehelper.github.io/

2.下面我们就是使用的方法了

2.1引入依赖

            <dependency>
    	        <groupId>com.github.pagehelper</groupId>
    	        <artifactId>pagehelper</artifactId>
    	        <version>4.1.0</version>
    	    </dependency>

2.2增加配置文件

在你的配置文件的包(随便什么包都行)    新建MyBatisConfig 类

@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;
	}
}

2.3包装类

在你查询全部信息方法前,例如我

方法前添加这个包装类
PageHelper.startPage(page, size);
//我的示例

  /**
     * 分页接口
     *
     * @param page 当前第几页,默认第一页
     * @param size 每页显示几条
     */
    @GetMapping("page")
    public Object TestGetVideoALl(@RequestParam(value = "page", defaultValue = "1") int page,
                                  @RequestParam(value = "size", defaultValue = "10") int size) {
        PageHelper.startPage(page, size);
        List<Video> list =  videoService.GetVideoAll();
        PageInfo<Video> pageInfo = new PageInfo<>(list);
        Map<String, Object> data = new HashMap<>();
        data.put("total_size",pageInfo.getTotal());//总条数
        data.put("tatal_page",pageInfo.getPages());//总页数
        data.put("current_page",page);//当前页
        data.put("data",pageInfo.getList());//数据
        return data;
    }

2.4基本原理

sqlsessionFactory -> sqlSession-> executor -> mybatis sql statement

通过mybatis plugin 增加拦截器,然后拼装分页 org.apache.ibatis.plugin.Interceptor

所以我们想做分页就很简单了很多,避开了很繁琐的代码

01-14 01:49
查看更多