本文主要是介绍PageHelper实现分页查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、前端代码
<div class="layui-card-header">用户列表</div><div class="layui-card-body"><form action="/older/list" method="post" id="searchForm"><input type="hidden" name="pageNum" id="pageNum"></form><table class="layui-table"><thead><tr><th><input type="checkbox" onclick="checkAll()" id="selectall"/></th><th>姓名</th><th>性别</th><th>家庭住址</th><th style="text-align: center;">操作</th></tr></thead><tbody><c:if test="${requestScope.pageInfo.list!=null}"><c:forEach items="${requestScope.pageInfo.list}" var="row"><tr><td><input type="checkbox" name="id" value="${row.oid}"></td><td>${row.oname}</td><td>${row.osex}</td><td>${row.oaddress}</td><td style="text-align: center" ><a class="layui-btn layui-btn-primary layui-btn-sm" href="${pageContext.request.contextPath}/older/detail?id=${row.oid}" style="text-decoration:none">详情 </a><a class="layui-btn layui-btn-normal layui-btn-sm" href="${pageContext.request.contextPath}/older/query?id=${row.oid}" style="text-decoration:none"><i class="layui-icon"></i></a><a class="layui-btn layui-btn-danger layui-btn-sm" href="javascript:deleteRow(${row.oid})" style="text-decoration:none"><i class="layui-icon"></i></a></td></tr></c:forEach></c:if></tbody></table><nav aria-label="Page navigation" style="text-align: center"><ul class="pagination"><li><a href="javascript:doPage(1)" aria-label="Previous"><span aria-hidden="true">首页</span></a></li><c:if test="${requestScope.pageInfo.pageNum>1}"><li><a href="javascript:doPage(${requestScope.pageInfo.pageNum -1})">上一页</a></li></c:if><c:if test="${requestScope.pageInfo.pageNum<requestScope.pageInfo.pages}"><li><a href="javascript:doPage(${requestScope.pageInfo.pageNum +1})">下一页</a></li></c:if><li><a href="#" disabled>${requestScope.pageInfo.pageNum}/${requestScope.pageInfo.pages}页</a></li><li><a href="javascript:doPage(${requestScope.pageInfo.pages})" aria-label="Next"><span aria-hidden="true">末页</span></a></li></ul></nav></div></div>
-
<form action="/older/list" method="post" id="searchForm"><input type="hidden" name="pageNum" id="pageNum"> </form>
开头一个form表单,将页码作为隐含参数
-
function doPage(pageNo) {document.getElementById("pageNum").value = pageNo;document.getElementById("searchForm").submit();}
定义一个doPage( )函数,当点击换页时,执行该函数并把携带着页码数据的表单提交给后端
二、后端实现
controller层调用service层函数实现数据查询
/*** 管理员页面的老人信息分页功能实现*/@RequestMapping(value = "/older/list", method = {RequestMethod.GET, RequestMethod.POST})public String pageList(Older record,@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,@RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,ModelMap modelMap) {PageInfo<Older> pageInfo = olderService.getOlderList(pageNum, pageSize, record);modelMap.addAttribute("pageInfo", pageInfo);modelMap.addAttribute("record", record);return "older/older_list";}
service层的业务功能实现
@Overridepublic PageInfo<Older> getOlderList(Integer pageNum, Integer pageSize, Older record) {OlderExample example = new OlderExample();OlderExample.Criteria criteria = example.createCriteria();if (null != record) {if (!(StringUtils.isNullOrEmpty(record.getOname()))) { //根据姓名查询criteria.andOnameLike("%" + record.getOname() + "%");}if (!(StringUtils.isNullOrEmpty(record.getJ_phonenumber()))) { //更具监护人手机号查询criteria.andJ_phonenumberLike("%" + record.getJ_phonenumber() + "%");}}PageHelper.startPage(pageNum,pageSize);List<Older> olderList=olderMapper.selectByExample(example);PageInfo<Older> info=new PageInfo<>(olderList);info.setPageNum(info.getPageNum());info.setPages(info.getPages());return info;}
-
public PageInfo<Older> getOlderList(Integer pageNum, Integer pageSize, Older record) {
定义一个公开方法
getOlderList
,它接受三个参数:pageNum
(页码),pageSize
(每页的记录数)和record
(一个Older
对象,可能用于作为查询条件)。这个方法返回一个PageInfo<Older>
对象,它通常包含分页信息以及Older
对象的列表。 -
OlderExample example = new OlderExample();
创建一个
OlderExample
对象。在MyBatis中,这样的对象通常用于构建查询条件 -
OlderExample.Criteria criteria = example.createCriteria();
从
OlderExample
对象中创建一个查询条件(Criteria) -
在上面的代码中,
OlderExample.Criteria criteria = example.createCriteria();
这行代码是在使用 MyBatis Generator (MBG) 或类似的 MyBatis 工具生成的代码来构建查询条件。OlderExample
是 MyBatis Generator 为Older
实体类生成的辅助类,它通常包含了一些静态内部类和方法,用于构建查询条件。其中,Criteria
是OlderExample
的一个内部类,用于定义查询的具体条件。example.createCriteria()
是调用OlderExample
类的createCriteria
方法来创建一个新的Criteria
实例。这个Criteria
实例之后会被用来设置各种查询条件,如字段的等于、不等于、大于、小于、模糊查询等。在你提供的代码片段中,
criteria
对象被用来设置模糊查询条件,比如根据姓名(oname
)和监护人手机号(j_phonenumber
)进行查询。这些条件通过调用criteria
的方法(如andOnameLike
和andJ_phonenumberLike
)来设置。 -
PageHelper.startPage(pageNum,pageSize);
使用
PageHelper
(一个常用于MyBatis的分页插件)来开始一个分页查询。 -
List<Older> olderList=olderMapper.selectByExample(example);
使用
olderMapper
(可能是MyBatis的Mapper接口)来执行基于前面定义的查询条件的查询,并获取结果列表。 -
PageInfo<Older> info=new PageInfo<>(olderList);
使用查询到的
olderList
列表来初始化一个PageInfo
对象。这个对象包含了分页信息以及查询到的数据。 -
info.setPageNum(info.getPageNum()); info.setPages(info.getPages());
这两行代码看起来是多余的,因为它们只是重新设置了
info
对象中的页码和总页数,而这些值在初始化PageInfo
时应该已经被正确设置了。
这篇关于PageHelper实现分页查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!