PageHelper实现分页查询
这行代码是在使用 MyBatis Generator (MBG) 或类似的 MyBatis 工具生成的代码来构建查询条件。(可能是MyBatis的Mapper接口)来执行基于前面定义的查询条件的查询,并获取结果列表。实例之后会被用来设置各种查询条件,如字段的等于、不等于、大于、小于、模糊查询等。实体类生成的辅助类,它通常包含了一些静态内部类和方法,用于构建查询条件。在MyBatis中,这样的对象通
一、前端代码
<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层的业务功能实现
@Override
public 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
时应该已经被正确设置了。
更多推荐
所有评论(0)