前言
大多数框架都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外。
在Mybatis中最出名的就是PageHelper 分页插件,下面我们先来使用一下这个分页插件。
如何集成分页插件
Spring-Boot+Mybatis+PageHelper
引入pom依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
配置分页插件配置项
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
service接口代码
PageInfo selectUsersByName(int pageIndex, int pageSize);
service实现类代码
@Override
public PageInfo selectUsersByName(int pageIndex, int pageSize) {
PageHelper.startPage(pageIndex, pageSize);
List<User> users = userMapper.selectUsersByName(null);
return new PageInfo(users);
}
mapper代码
<select id="selectUsersByName" resultMap="User">
select * from m_user
<where>
<if test="userName != null and userName != ''">
`name` = #{userName}
</if>
</where>
</select>
List<User> selectUsersByName(@Param("userName") String userName);
controller代码
@GetMapping("/user/name")
public PageInfo selectUsersByName(int pageIndex, int pageSize) {
return userService.selectUsersByName(pageIndex, pageSize);
}
然后我们访问
http://localhost:9002/user/name?pageIndex=1&pageSize=10
输出结果:

输出重要项说明:
-
pageNum:当前页码。 -
pageSize:每页数。 -
list:就是我们返回的业务数据。 -
total:总数据。 -
hasNextPage:是否存在下一页。
我们在看看输出SQL:

发现其实执行了两条SQL:count和limit。
猜测分页插件实现