数据库操作
myBatis中集成分页pageHelper插件
实现方式
在pom.xml中添加依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
在application.yml中添加pagehelper配置
# pagehelper.helperDialect=mysql 旧版配置分页插件数据库:pagehelper.dialect: mysql (该配置请去掉) https://www.jianshu.com/p/a702f1e74300(该版本1.2.10报错解决的文档)
#如果不去掉上面这个会报 com.github.pagehelper.PageException: java.lang.ClassNotFoundException: mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
# pagehelper.params=count=countSql
说明:
* helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。你也可以配置helperDialect属性来指定分页插件使用哪种方言。
* reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
*params:用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
*supportMethodsArguments:默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
代码示例
在controller层
@RequestMapping("/get-books")
public RespResult getBooks(@RequestParam("book") String book,
@RequestParam("page") Integer page,
@RequestParam("pageSize") Integer pageSize
) {
PageInfo<Book> pageInfo = bookService.selectByExample(book,page,pageSize);
RespResult result = new RespResult();
result.setCode("200");
result.setMessage("查询成功");
result.setData(pageInfo);
return result;
}
在service层
PageInfo<Book> selectByExample(String book, Integer page, Integer pageSize);
在service实现层
@Override
public PageInfo<Book> selectByExample(String book, Integer page, Integer pageSize) {
BookExample bookExample = new BookExample();
BookExample.Criteria criteria = bookExample.createCriteria();
if (!StringUtil.isNullOrEmpty(book)) {
criteria.andBookLike("%" + book + "%");
}
PageHelper.startPage(page,pageSize);
PageHelper.orderBy("id DESC");
List<Book> books = bookMapper.selectByExample(bookExample);
if (books != null) {
PageInfo<Book> bookPageInfo = new PageInfo<Book>(books);
return bookPageInfo;
}
return null;
}
返回值:
{
"code": "200",
"message": "查询成功",
"data": {
"total": 8,
"list": [
{
"id": 6,
"uid": 2,
"book": "123444",
"store": "33335555",
"createAt": "2020-12-07 03:26:24",
"updateAt": "2020-12-07 03:26:24"
},
{
"id": 5,
"uid": 2,
"book": "123",
"store": "3333",
"createAt": "2020-12-07 03:24:31",
"updateAt": "2020-12-07 03:24:31"
}
],
"pageNum": 2,
"pageSize": 2,
"size": 2,
"startRow": 3,
"endRow": 4,
"pages": 4,
"prePage": 1,
"nextPage": 3,
"isFirstPage": false,
"isLastPage": false,
"hasPreviousPage": true,
"hasNextPage": true,
"navigatePages": 8,
"navigatepageNums": [
1,
2,
3,
4
],
"navigateFirstPage": 1,
"navigateLastPage": 4
}
}