`

Spring JPA 分页结合WEB框架DWZ显示 2种方法

    博客分类:
  • @SSH
 
阅读更多

本文章结合Spring JPA 与 DWZ框架,描述分页。总共有2中方式,第一种使用Spring DATA JPA 的Page自带的分页功能,第二种使用类似Hibernate的分页方式。第一种相对于第一种较简单。

 

前端内容显示一致:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><%@ include file="/WEB-INF/jsp/layouts/dwz-taglib.jsp"%>
<form id="pagerForm" method="post" action="<c:url value='/system/info/channelType/list.htm'/>">
	<input type="hidden" name="pageNum" value="${currentPage}" />
	<input type="hidden" name="numPerPage" value="${numPerPage}" />
</form>
<!--搜索栏开始-->

<!--搜索栏结束-->
<!--表格列表开始-->
<div class="pageContent">
	<div class="panelBar">
		<ul class="toolBar">
			<li><a class="add" target="navTab" rel="addChannelType" href="<c:url value='/system/info/channelType/add.htm'/>" title="添加分类"><span>添加</span></a></li>
			<li><a class="edit" target="navTab" rel="editChannelType" href="<c:url value='/system/info/channelType/edit'/>/{slt_objId}.htm" title="编辑分类"><span>编辑</span></a></li>
			<li><a class="delete" target="ajaxTodo" href="<c:url value='/system/info/channelType/delete'/>/{slt_objId}.htm" title="你确定要删除吗?"><span>删除</span></a></li>
		</ul>
	</div>
	<table class="table" width="99%" layoutH="200" rel="jbsxBox">
		<thead>
			<tr>
				<th width="50">NO.</th>
				<th>名称</th>
				<th>编码</th>
			</tr>
		</thead>
		<tbody>
		<c:forEach var="item" items="${itemList}" varStatus="s">
			<tr target="slt_objId" rel="${item.id }">
				<td>${s.index + 1}</td>
				<td>${item.name}</td>
				<td>${item.code}</td>
			</tr>
		</c:forEach>
		</tbody>
	</table>
	<div class="panelBar">
	<div class="pages">
		<span>显示</span>
		<select name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
			<c:forEach begin="10" end="40" step="10" varStatus="s">
				<option value="${s.index}" ${numPerPage eq s.index ? 'selected="selected"' : ''}>${s.index}</option>
			</c:forEach>
		</select>
		<span>条,共${totalCount}条</span>
	</div>
	<div class="pagination" targetType="navTab" totalCount="${totalCount}" numPerPage="${numPerPage}" pageNumShown="${pageNumShown}" currentPage="${currentPage}"></div>
	</div>
</div>
<!--表格列表结束--> 

 该JSP内容结合DWZ做分页列表。

 

方式一:

Spring提供了两个分页的类,分别是pager和pageable,下面使用这两个类完成web数据的分页及显示.

控制层:

	@RequestMapping("/list")
	public String list(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		QueryParameter parameter = QueryParameter.createQuery();
		Integer currentPage = 0;
		Integer pageNum = getIntParameter(request, "pageNum");
		if (pageNum != null) {
			currentPage = getIntParameter(request, "pageNum");
			currentPage = currentPage - 1;
		}
		Page<ChannelType> pct = channelTypeService.getPage(parameter,
				currentPage, Constant.DEFAULT_PAGE_SIZE);
		addPageResultModel(pct, model);
		return getListPage();
	}

	protected void addPageResultModel(Page<ChannelType> pct, Model model) {
		int currentPage = pct.getNumber() + 1;
		model.addAttribute("totalCount", pct.getTotalElements());
		model.addAttribute("numPerPage", Constant.DEFAULT_PAGE_SIZE);
		model.addAttribute("pageNum", currentPage);
		model.addAttribute("pageNumShown", pct.getTotalPages());
		model.addAttribute("currentPage", currentPage);
		model.addAttribute("itemList", pct.getContent());
	}

 

 

服务层:

	public Page<ChannelType> getPage(QueryParameter parameter, int pageStart,
			int pageSize) throws Exception {
		return channelTypeDao.findAll(DynamicSpecifications.buildAndFilter(
				parameter.getFilterList(), ChannelType.class), new PageRequest(
				pageStart, pageSize));
	}

 DAO层:

 

public interface ChannelTypeDao extends
		PagingAndSortingRepository<ChannelType, Long>,
		JpaSpecificationExecutor<ChannelType> {

}

 在这里ChannelTypeDao继承了PagingAndSortingRepository,很好的实现了分页功能。

 

 

 方式二:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics