真假分页

当要显示数据量足够大的时候,我们往往采用分页显示的处理办法。
分页有真分页和假分页。

一、真分页

确定要显示的数量和内容,然后每次都去数据库取出该少量数据,优点是数据量小,缺点是访问数据库频繁。在大型网站中往往采用真分页,比如百度的图片获取。

二、假分页

从数据库中取出所有的数据,然后分页在界面上显示。访问一次数据库,但由于选择的数据量比较大,所以第一次花费时间比较长,但之后每一页的显示都是直接、快速的,避免对数据库的多次访问。

分页工具(mybatis)

分页工具-pagehelper
image.png

pageHelper使用的例子

参考官网进行配置

1. 引入分页插件

使用推荐的maven方式。
在pom.xml中添加如下依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>最新版本</version>
</dependency>

!!!!!
千万注意,ssm项目当我们引入了新的依赖,一定要在project structure中的lib中添加依赖
image.png


2. 配置拦截器插件

两种配置方法:1)在mybatis配置xml中配置拦截器插件,2)在spring配置文件中配置拦截器插件
这里选择的是在mybatis配置xml中配置拦截器插件(里面的property参数配置参考下一点)

    <!--
    plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
    properties?, settings?,
    typeAliases?, typeHandlers?,
    objectFactory?,objectWrapperFactory?,
    plugins?,
    environments?, databaseIdProvider?, mappers?
-->
    <plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
            <property name="helperDialect" value="mysql"/>
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>
3. 分页插件参数介绍和配置

具体参考官网。
本例中使用了 1)helperDialect 2)reasonable两个参数。

4. 在代码中使用

直接在controller控制器中写我们的pageinfo分页信息的控制器,也是要加@RequestMapping和@ResponseBody两个注解,通过访问特定mapper,返回json格式的分页查询数据。

在本例中,直接在TProductController.java中添加控制器

    /**
     * 分页实现
     * 获得分页对象,里面封装了分页需要用到的所有信息
     * @param pageNum 当前是第几页
     * @param pageSize 当前页一共显示多少条记录
     * @return
     */
    @RequestMapping(value = "/pageInfo", method = RequestMethod.GET)
    @ResponseBody
    public PageInfo<TProduct> getPageInfo(int pageNum, int pageSize){
        //1. 通过调用PageHelper的静态方法开始获取分页数据
        //指定当前是第一页,以及每页侠士的记录条数
        PageHelper.startPage(pageNum, pageSize);

        //2. 获取所有的商品记录
        List<TProduct> list = productService.getList();

        //3. 获得当前分页对象
        PageInfo<TProduct> pageInfo = new PageInfo<TProduct>(list);

        return pageInfo;
    }
5. 访问接口测试

通过postman测试接口,用的是get方法,参数有pageNum和pageSize两个
image.png
得到返回的数据

{
    "total": 15,
    "list": [
        {
            "id": 9,
            "name": "M11",
            "images": "aaaa",
            "price": 1333,
            "salePrice": 5000,
            "salePoint": "sdf",
            "typeId": 1,
            "typeName": "sss",
            "flag": true,
            "createTime": "2019-06-05 00:10:29",
            "updateTime": "2019-06-21 00:10:34",
            "createUser": 1,
            "updateUser": 1
        },
        {
            "id": 11,
            "name": "M13",
            "images": "aaaa",
            "price": 3333,
            "salePrice": 222,
            "salePoint": "sdf",
            "typeId": 1,
            "typeName": "sss",
            "flag": true,
            "createTime": "2019-06-05 00:10:29",
            "updateTime": "2019-06-21 00:10:34",
            "createUser": 1,
            "updateUser": 1
        },
        {
            "id": 12,
            "name": "M14",
            "images": "aaaa",
            "price": 4333,
            "salePrice": 222,
            "salePoint": "sdf",
            "typeId": 1,
            "typeName": "sss",
            "flag": true,
            "createTime": "2019-06-05 00:10:29",
            "updateTime": "2019-06-21 00:10:34",
            "createUser": 1,
            "updateUser": 1
        },
        {
            "id": 15,
            "name": "M15",
            "images": "aaaa",
            "price": 555,
            "salePrice": 222,
            "salePoint": "sdf",
            "typeId": 1,
            "typeName": "sss",
            "flag": true,
            "createTime": "2019-06-05 00:10:29",
            "updateTime": "2019-06-21 00:10:34",
            "createUser": 1,
            "updateUser": 1
        },
        {
            "id": 16,
            "name": "M16",
            "images": "aaaa",
            "price": 666,
            "salePrice": 222,
            "salePoint": "sdf",
            "typeId": 1,
            "typeName": "sss",
            "flag": true,
            "createTime": "2019-06-05 00:10:29",
            "updateTime": "2019-06-21 00:10:34",
            "createUser": 1,
            "updateUser": 1
        }
    ],
    "pageNum": 1,
    "pageSize": 5,
    "size": 5,
    "startRow": 1,
    "endRow": 5,
    "pages": 3,
    "prePage": 0,
    "nextPage": 2,
    "isFirstPage": true,
    "isLastPage": false,
    "hasPreviousPage": false,
    "hasNextPage": true,
    "navigatePages": 8,
    "navigatepageNums": [
        1,
        2,
        3
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 3
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值