后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用
mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和springboot项目中使用mybatis pagehelper
一、mybatis pagehelper在SSM项目中的使用
1.引入maven依赖,(自行选择版本,这里我用的4.1.3)
2.在mybatis的配置文件中进行配置
<plugins>
<!--pageNum当前页数 pageSize 每页显示的记录数,pages 总页数 totals总记录数 -->
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!--设置数据库方言,这里我用的mysql-->
<property name="dialect" value="mysql"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="true"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="false"/>
</plugin>
</plugins>
3.使用mybatis分页插件
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
/**
* 分页查询视频列表
* @param pageNum
* @param pageSize
* @return JqueryGrid
*/
@Transactional(propagation = Propagation.SUPPORTS)
public JqueryGrid selectVideoListVo(Integer pageNum, Integer pageSize){
//开始使用mybatis 分页插件
PageHelper.startPage(pageNum,pageSize);
List<VideoVo> videoVoList = videosMapper.selectVideoListVo();
PageInfo<VideoVo> pageInfo = new PageInfo<VideoVo>(videoVoList);
JqueryGrid jqueryGrid = new JqueryGrid();
//设置当前页
jqueryGrid.setPage(pageInfo.getPageNum());
//设置总页数
jqueryGrid.setTotal(pageInfo.getPages());
//设置总记录数
jqueryGrid.setRecords(pageInfo.getTotal());
//设置当前页的list集合
jqueryGrid.setRows(pageInfo.getList());
return jqueryGrid;
}
在该方法中,传入了当前页 (pageNum),以及每一页显示的数量(pageSize),我们对遍历的列表再进行分页查询,得到最终想要的结果。
二、mybatis pagehelper在springboot项目中的使用
1.导入maven依赖
<!--pagehelper 用于springboot项目-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2.在applicationContext.xml或applicationContext.yml中进行配置
3.使用mybatis分页插件
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@Transactional(propagation = Propagation.SUPPORTS)
public PagedResult selectMyFollow(Integer pageNum,String userId,Integer pageSize) {
if(pageNum==null||pageNum<=0) {
pageNum=1;
}
//进行分页
PageHelper.startPage(pageNum, pageSize);
//查询到该用户发布的所有的视频
List<Users> userList =usersMapper.selectMyFollow(userId);
//
PageInfo<Users> pageInfoList = new PageInfo<Users>(userList);
PagedResult pagedResult = new PagedResult();
//当前页数
pagedResult.setPageNum(pageInfoList.getPageNum());
//总页数
pagedResult.setPages(pageInfoList.getPages());
//总记录数
pagedResult.setTotals(pageInfoList.getTotal());
//设置当前页的列表内容
pagedResult.setPageList(pageInfoList.getList());
return pagedResult;
}
该方法返回的就是一个分页查询之后封装的一个对象。
==========================================================================
在SSM和springboot项目中引入mybatis pagehelper的方法就介绍到这里了。
PageInfo(com.github.pagehelper.PageInfo)类中有几个属性,其中 pageNum表示当前页,pages表示总页数,total表示总记录数,List表示当前页的列表内容。
后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用的更多相关文章
- 在前后端分离的SpringBoot项目中集成Shiro权限框架
参考[1].在前后端分离的SpringBoot项目中集成Shiro权限框架 参考[2]. Springboot + Vue + shiro 实现前后端分离.权限控制 以及跨域的问题也有涉及
- 使用maven构建项目时,SSM和springboot项目的打包与云服务器部署
下面讲讲如何打包SSM和springboot项目,并部署到云服务器上. 由于使用的IDE不同,有的使用eclipse,有的使用idea,所以如果在IDE中按照 maven clean 再 maven ...
- Python分页转Mybatis pagehelper格式分页
最近工作里遇到一个需求要把之前用Java写的一个http接口替换成用Python写的,出参是带了mybatis pageHelper中PageInfo信息的一个JSON串,而Python这边分页不会涉 ...
- SpringBoot项目中,Mybatis的使用
项目中使用MyBatis的地方很少,可以说是基本不用,慕课网上面这个项目介绍给也就是一些比较简单的使用例子,我用JPA比较的多,MyBatis有两种使用方式 1.导入MyBatis的依赖 <de ...
- 第18章—后端分页(Mybatis)
spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...
- 在springboot项目中使用mybatis 集成 Sharding-JDBC
前段时间写了篇如何使用Sharding-JDBC进行分库分表的例子,相信能够感受到Sharding-JDBC的强大了,而且使用配置都非常干净.官方支持的功能还包括读写分离.分布式主键.强制路由等.这里 ...
- idea中运行ssm 或springboot项目时,project Structure的配置
ctrl+alt+shift+s进入 project Structure 首先是project选项 Modules 标明source testsource 以及 resource 和 testreso ...
- 使用SSM 或者 springboot +mybatis时,对数据库的认证信息(用户名,密码)进行加密。
通常情况下,为了提高安全性,我们需要对数据库的认证信息进行加密操作,然后在启动项目的时候,会自动解密来核对信息是否正确.下面介绍在SSM和springboot项目中分别是怎样实现的. 无论是使用SSM ...
- Thymeleaf前后端分页查询
分页查询是一个很常见的功能,对于分页也有很多封装好的轮子供我们使用. 比如使用mybatis做后端分页可以用Pagehelper这个插件,如果使用SpringDataJPA更方便,直接就内置的分页查询 ...
随机推荐
- Vuejs+elementUI项目,在进行打包时,要注意的问题
注意:打包之前,需要注意修改一些地方 (1)若是前后端分离开发的,前端开发过程中可能会在api.js中设置访问路径为服务器所在电脑的ip:端口,打包前,最好将它改回localhost:8080 (2) ...
- Java并发,synchronized锁住的内容
synchronized用在方法上锁住的是什么? 锁住的是当前对象的当前方法,会使得其他线程访问该对象的synchronized方法或者代码块阻塞,但并不会阻塞非synchronized方法. 脏读 ...
- 51Nod 1182 完美字符串 (贪心)
约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...
- Wannafly Camp 2020 Day 6K 最大权值排列
按照样例那样排列即可 #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; if( ...
- [CQOI2015] 网络吞吐量 - 最大流,最短路
在第i个点只能选A[i]次的情况下,能选出多少条1-n的最短路 Solution 我们造出最短路DAG,然后对每个点拆点限流,跑最大流即可 双向边警告!(有悖直觉 #include <bits/ ...
- Docker最全教程——从理论到实战(十)
终于按时完成第二篇.本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续——数据库容器化.本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容 ...
- Java连载84-Collection的常用方法、迭代器
一.Collections的常用方法介绍 1.承接上次连载,先介绍几个简单的常用方法 package com.bjpowernode.java_learning; import java.util.* ...
- 全排列(dfs-有重复数字)
给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列.例如:S = "1312", 输出为: 1123 1132 1213 1231 131 ...
- Qt程序异常结束,The process was ended forcefully....
我用的Qt版本是5.9.6,运行了好几次程序都妥妥当当的,然后就被安排上了...出现如下错误: 也是刚入手Qt不久,出现这样的错误我以为是代码的问题,然后撤销一些代码发现还是这样的错,索性就关闭Qt然 ...
- 使用TensorFlow训练模型的基本流程
本文已在公众号机器视觉与算法建模发布,转载请联系我. 使用TensorFlow的基本流程 本篇文章将介绍使用tensorflow的训练模型的基本流程,包括制作读取TFRecord,训练和保存模型,读取 ...