1、既然要整合需要在pom文件中引入pagehelper分页的插件。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2、分页插件的配置
这里的话我是配在 application.properties配置文件中。
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true
4、实体类
设计一个实体类用来控制层输入分页的值,page和size是分页要传的。
public class Query {
/** 当前页 **/
private Integer page;
/** 每页大小 **/
private Integer size;
/** 搜索条件 **/
private String search;
//...此数省略get和set方法
}
3、controller控制层
这里的话用上面Query对象来接收对应的参数,主要是两个字段page和size,page一个是当前第几页,size每页的大小。前端的话要传入这两个值,至于怎么传入过来就行,可以问号传参,路径传参都行,我这里用的是对象的形式。分页插件给我们提供PageInfo类用来封装页面信息,我们把查询的结果对象设到pageInfo类里面再进行返回pageInfo对象。
@PostMapping ("/query")
public ResultVO queryAiAccountPage(@RequestBody Query query){
List<AiAccountVO> aiAccountVO = aiAccountService.queryAiAccountPage(query);
PageInfo pageInfo = new PageInfo(aiAccountVO);
return ResultVO.success(pageInfo);
}
4、service服务层
插件提供PageHelper.startPage(int PageNum,int PageSize)方法;再传入dao层之前要用来设置当前页和每页的数据条目数,我们把传入的对象设置进去。
public List<AiAccountVO> queryAiAccountPage(Query query) {
PageHelper.startPage(query.getPage(), query.getSize());
return aiAccountMapper.queryAiAccountAll(query);
}
5、Dao层和Mybatis.xml层
其实Dao层和Mybatis.xml不变,还是根据你的查询语句和查询条件进行查询,不用做改动。
dao层
@Mapper
public interface AiAccountMapper {
List<AiAccountVO> queryAiAccountAll(Query query);
}
mybatis.xml
<select id="queryAiAccountAll" parameterType="com.game.manager.aiaccount.domain.Query"
resultMap="queryAiAccountForBlod">
SELECT
*
FROM
ai_account_info
<where>
<if test="search != null and search != ''">
<bind name="pattern" value="'%' + search + '%'"/>
nick_name like #{pattern}
</if>
</where>
</select>
6、测试接口
这里的话我用postman进行测试一下,这里的话page传1,当前第一页,size传2,每页显示2条。
7、排序
PageHelper分页插件还可以进行查询结果排序
如:PageHelper.orderBy(“weight desc”); 再传入dao层前进行设置,这里的话我是按权重就行降序,需要传两个值,一个是你数据库表对应的需要判断的字段名,第二个是排序规律(desc为降序,asc为升序)。
也可以一步到位,PageHelper.startPage(pageNum, pageSize, orderBy); orderBy是一个string类型的,也就是上面传入的两个值。