最近遇见一个奇怪的情况当我使用pagehelper分页插件中startpage的时候,分页插件正常来说会直接进行分页,但是打印出来的sql中却没有添加limit限制条件。
pagehelper分页插件的具体操作是如何进行分页的
具体来说分页插件只是利用pageNum pageSize来拼接到sql后面实现分页的效果 也就是说只是在sql后面拼接上一个limit语句来实现分页的效果
那知道了分页的原理 那就到了为什么分页不会生效:
一、mybatis的版本不对
如果说mybatis中没有正确版本不适配分页插件那么分页就不会生效
以下就是mybatis的版本:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
最好选择这个版本往上的mybatis版本
二、startpage的位置写的不对
我们知道如果要开启分页需要写上startpage来开启 这个start必须写在sql前面:
PageHelper.startPage();
userMapper.selectLoginUser(userId);
就类似于这样的效果上面代码不全请谨慎参考
三、有两个sql的时候只会对第一个sql生效
也就是说当你有两个sql语句都需要分页的时候需要开启两次分页:
PageHelper.startPage();
//分页只会只会对这个sql生效
userMapper.selectLoginUser(userId);
//这个sql的分页就不会生效
userMapper.selectLoginUser(userId);
只需要在第二个sql查询之前再次开启分页就可以了