• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Spring Data JPA+kkpager实现分页功能实例

java 搞代码 4年前 (2022-01-05) 38次浏览 已收录 0个评论

本篇文章主要介绍了Spring Data JPA+kkpager实现分页功能实例,具有一定的参考价值,有兴趣的可以了解一下

一、spring Data JPA分页

分页效果如下:

前台表格用的是: Bootstrap

分页插件用的是: kkpager

kkpager是一个js分页展示控件,传入简单参数就能使用的分页效果控件,github地址:https://github.com/pgkk/kkpager

项目结构:

FamilyMember实体类:

 package com.fendo.entity; import java.io.Serializable; import java.util.Da<em style="color:transparent">来源gao.dai.ma.com搞@代*码网</em>te; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="FAMILY_MEMBER") public class FamilyMember implements Serializable{ private Integer id; private String FamilyName; private String FamilyCharge; private String Mobile; private String Email; private String Address; private Date CreateData; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(name="FAMILY_NAME") public String getFamilyName() { return FamilyName; } public void setFamilyName(String familyName) { FamilyName = familyName; } @Column(name="FAMILY_CHARGE") public String getFamilyCharge() { return FamilyCharge; } public void setFamilyCharge(String familyCharge) { FamilyCharge = familyCharge; } @Column(name="MOBILE") public String getMobile() { return Mobile; } public void setMobile(String mobile) { Mobile = mobile; } @Column(name="EMAIL") public String getEmail() { return Email; } public void setEmail(String email) { Email = email; } @Column(name="ADDRESS") public String getAddress() { return Address; } public void setAddress(String address) { Address = address; } @Column(name="CREATE_DATA") public Date getCreateData() { return CreateData; } public void setCreateData(Date createData) { CreateData = createData; } public FamilyMember() { super(); // TODO Auto-generated constructor stub } public FamilyMember(Integer id, String familyName, String familyCharge, String mobile, String email, String address, Date createData) { super(); this.id = id; FamilyName = familyName; FamilyCharge = familyCharge; Mobile = mobile; Email = email; Address = address; CreateData = createData; } } 

FamilyDao接口类:

 package com.fendo.dao; import java.util.List; import java.util.Map; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.repository.PagingAndSortingRepository; import com.fendo.entity.FamilyMember; public interface FamilyDao extends PagingAndSortingRepository, JpaSpecificationExecutor{ } 

FamilyService服务接口类:

 package com.fendo.service; import java.util.List; import java.util.Map; import com.fendo.entity.FamilyMember; public interface FamilyService { public List getAll() throws Exception; public FamilyMember save(FamilyMember familyMember) throws Exception; public Map getUserBySearch(Map familyArgs, final String sortType) throws Exception; } 

FamilyService服务接口实现类:

 package com.fendo.service.imp; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.transaction.Transactional; import org.springframework.stereotype.Service; import com.fendo.dao.FamilyDao; import com.fendo.entity.FamilyMember; import com.fendo.service.FamilyService; import com.fendo.util.PageUtils; @Service @Transactional public class FamilyServiceImp implements FamilyService{ @Autowired public FamilyDao familyDao; @Override public List getAll() throws Exception { return (List) this.familyDao.findAll(); } @Override public FamilyMember save(FamilyMember familyMember) throws Exception { return familyDao.save(familyMember); } /** * 查询用户信息列表(支持分页和多条件查询)。 * */ @Override public Map getUserBySearch(Map familyArgs, final String sortType) throws Exception { // 获得分页对象pageable,并且在pageable中页码是从0开始,设定按照sortType升序排列 Pageable pageable = PageUtils.buildPageRequest(Integer.valueOf(familyArgs.get("pageNum")), Integer.valueOf(familyArgs.get("pageSize")), sortType); Page objPage = familyDao.findAll(new Specification() { public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List lstPredicates = new ArrayList(); if (StringUtils.isNotBlank(familyArgs.get("FamilyName"))) { lstPredicates.add(cb.like(root.get("familyName").as(String.class), "%" + familyArgs.get("FamilyName") + "%")); } if (StringUtils.isNotBlank(familyArgs.get("Mobile"))) { lstPredicates.add(cb.like(root.get("mobile").as(String.class), "%" + familyArgs.get("Mobile") + "%")); } Predicate[] arrayPredicates = new Predicate[lstPredicates.size()]; return cb.and(lstPredicates.toArray(arrayPredicates)); } }, pageable); return PageUtils.getPageMap(objPage); } } 

前台接受参数工具类:

 package com.fendo.util; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; /** * 工具类 * @author fendo * */ public class FamilyUtil { /** * 封装从前台传递过来的查询参数。 * */ public static Map getSelArgsToMap(HttpServletRequest request) throws Exception { Map serArgs = new HashMap(); String FamilyName = request.getParameter("FamilyName"); String Mobile = request.getParameter("Mobile"); String pageNum = request.getParameter("pageNum") == null ? "1" : request.getParameter("pageNum"); String pageSize = request.getParameter("pageSize") == null ? "10" : request.getParameter("pageSize"); serArgs.put("FamilyName", FamilyName); serArgs.put("Mobile", Mobile); serArgs.put("pageNum", pageNum); serArgs.put("pageSize", pageSize); return serArgs; } } 

分页工具类:

 package com.fendo.util; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; public class PageUtils { /** * 封装分页数据到Map中。 */ public static Map getPageMap(Page objPage) { Map resultMap = new HashMap(); resultMap.put("resultList", objPage.getContent()); // 数据集合 resultMap.put("totalNum", objPage.getTotalElements()); // 总记录数 resultMap.put("totalPage", objPage.getTotalPages()); // 总页数 resultMap.put("pageNum", objPage.getNumber()); // 当前页码 resultMap.put("pageSize", objPage.getSize()); // 每页显示数量 return resultMap; } /** * 创建分页请求。 * * @param pageNum 当前页 * @param pageSize 每页条数 * @param sortType 排序字段 * @param direction 排序方向 */ public static PageRequest buildPageRequest(int pageNum, int pageSize, String sortType, String direction) { Sort sort = null; if (!StringUtils.isNotBlank(sortType)) { return new PageRequest(pageNum - 1, pageSize); } else if (StringUtils.isNotBlank(direction)) { if (Direction.ASC.equals(direction)) { sort = new Sort(Direction.ASC, sortType); } else { sort = new Sort(Direction.DESC, sortType); } return new PageRequest(pageNum - 1, pageSize, sort); } else { sort = new Sort(Direction.ASC, sortType); return new PageRequest(pageNum - 1, pageSize, sort); } } /** * 创建分页请求(该方法可以放到util类中). */ public static PageRequest buildPageRequest(int pageNum, int pageSize, String sortType) { return buildPageRequest(pageNum, pageSize, sortType, null); } /** * 创建分页请求 * * @param pageNum * @param pageSize * @param sort * @return */ public static PageRequest buildPageRequest(int pageNum, int pageSize, Sort sort) { return new PageRequest(pageNum - 1, pageSize, sort); } /** * 创建分页请求(该方法可以放到util类中). */ public static PageRequest buildPageRequest(int pageNum, int pageSize) { return buildPageRequest(pageNum, pageSize, null, null); } } 

Controller类:

 package com.fendo.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.fendo.entity.FamilyMember; import com.fendo.service.imp.FamilyServiceImp; import com.fendo.util.FamilyUtil; @Controller() @RequestMapping(value="DataTable") public class DataTableController { @Autowired public FamilyServiceImp FamilyMember; @RequestMapping(value="/home_list") public String home(Model model,HttpServletRequest request,HttpServletResponse response){ Map resultMap = new HashMap(); List list; try { list = FamilyMember.getAll(); // 查询表单或分页保持请求时 请求参数的接收 Map serArgs = new HashMap(); serArgs = FamilyUtil.getSelArgsToMap(request);//这个类在下面给出 resultMap = FamilyMember.getUserBySearch(serArgs, "CreateData"); //按创建时间排序 model.addAttribute("resultMap",resultMap); } catch (Exception e) { e.printStackTrace(); } return "datatable"; } } 

首页datatable.jsp

   <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><title>Spring Data JPA分页示例</title><!-- Bootstrap --><!-- jQuery (necessary for Bootstrap's JavaScript plugins) --><!-- Include all compiled plugins (below), or include individual files as needed --> <div class="container"> <div style="text-align:center"> <h2>Spring Data JPA分页示例</h2></div><div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">数据表格</h3></div><div class="panel-body">  <div class="row"> <div class="form-group col-sm-3"> <label>选择所有</label></div><div class="form-group col-sm-3"> <label>家庭名:</label></div><div class="form-group col-sm-3"> <label>手机号:</label></div><div class="col-sm-3"> <button type="submit" class="btn btn-primary">搜索</button><button type="button" class="btn btn-primary">删除</button></div></div><table class="table table-hover" style="margin-top:2px"> <thead> <tr> <th></th><th>顺序</th><th>家庭名称</th><th>家庭Key</th><th>负责人</th><th>手机号</th><th>邮箱</th><th>家庭地址</th><th>创建时间</th><th>状态</th><th>操作</th></tr></thead><tbody>  <tr> <td></td><th scope="row">${status.index+1}</th><td>${lise.familyName}</td><td>${lise.id}</td><td>${lise.familyCharge}</td><td>${lise.mobile }</td><td>${lise.email}</td><td>${lise.address}</td><td>${lise.createData}</td><td>启用</td><td>编辑</td></tr></tbody></table></div></div><div style="width:800px;margin:0 auto"> <div id="kkpager"></div></div></div>

完整示例: SpringData-JPA_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是Spring Data JPA+kkpager实现分页功能实例的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring Data JPA+kkpager实现分页功能实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址