springboot+MyBatis实现分页

前言

在web开发中 我们会经常遇到数据量太大的情况 前端一次性展示不完全,对此 我们一般是使用分页来解决这样的问题。分页就是值传给前端的数据只是一部分 这一部分的数据用来展示 其他的数据以页码的形式来放在下面。分页也有两种思路 第一种是从数据库里面查的时候就分好页。直接传给前端就好了 第二种就是使用分页插件 查询就全查出来,但是后续使用插件来进行分页。

第一种

这个上学期使用servlet的时候就用过了 具体的思路就是上面说的
本文主要介绍第二种分页的方法。

第二种 使用pagehelper插件

首先导入依赖

<!--分页插件-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.1.1</version>
            </dependency>

介绍一下这个插件的原理 大概就是 当你从数据库里面获取这个分页的内容的时候 这个插件就会更具你设置的值 页面的大小 和页面数目 来自动的加入sql语句 这里有一个坑;
在这里插入图片描述
假如是这个sql语句 这个后面千万不能加; 因为你只要加了;代表的是这个sql语句已经结束了 所以你查询的时候你给pagehelper设置的属性所生成的sql语句也不能加入到这个后面去。就汇报一些奇奇怪怪的错误。
其次就是碰到的第二个坑 当我从数据库里面查找数据的时候 发现找到的数据有一些变成了Null这 我首先一直以为是由于我使用了resulttype的原因 但是想了一下发现这个和resultmap没什么区别 只是说resultmap能更加确切的得到列的属性。然后利用单元测试 我测试了user表,发现user表里面的东西能被查出来,这表示sql语句是没问题的 出问题的只能是这个表 。我又想表的问题能在哪里呢?只能是属性和表的名字 如果说是string的问题的话 那么user表里面的string为什么能被查出来呢??所以只能是表的名字。我突然想到表的名字要和对象的属性的名字一致 只能是大小不一样。 所以最后成功找到问题的所在。原来是表的名字和对象的名字不一致导致得到的值没办法赋给对象里面确切的值。

在这里插入图片描述
当你查询出来的时候得到的是page类型的对象 通过tostring看到里面知识一个list加上设置的一些属性 实质上还是一个list。 最后是controller层 这里会把这个查找到的page对象进行封装 设置一些属性封装好然后再送给前端。


版权声明:本文为q584401071原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。