多平台统一管理软件接口,如何实现多平台统一管理软件接口
267
2023-05-08
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.Date;
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
}
FamilyService服务接口类:
package com.fendo.service;
import java.util.List;
import java.util.Map;
import com.fendo.entity.FamilyMember;
public interface FamilyService {
public List
public FamilyMember save(FamilyMember familyMember) throws Exception;
public Map
}
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
return (List
}
@Override
public FamilyMember save(FamilyMember familyMember) throws Exception {
return familyDao.save(familyMember);
}
/**
* 查询用户信息列表(支持分页和多条件查询)。
*
*/
@Override
public Map
// 获得分页对象pageable,并且在pageable中页码是从0开始,设定按照sortType升序排列
Pageable pageable = PageUtils.buildPageRequest(Integer.valueOf(familyArgs.get("pageNum")),
Integer.valueOf(familyArgs.get("pageSize")), sortType);
Page
public Predicate toPredicate(Root
List
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
Map
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
Map
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;
@Controllhttp://er()
@RequestMapping(value="DataTable")
public class DataTableController {
@Autowired
public FamilyServiceImp FamilyMember;
@RequestMapping(value="/home_list")
public String home(Model model,HttpServletRequest request,HttpServletResponse response){
Map
List
try {
list = FamilyMember.getAll();
// 查询表单或分页保持请求时 请求参数的接收
Map
serArgs = FamilyUtil.getSelArgsToMap(request);//这个类在下面给出
resultMap = FamilyMember.getUserBySearch(serArgs, "CreateData"); //按创建时间排序
model.addAttribute("resultMap",resultMap);
} catch (Exception e) {
e.printStackTrace();
}
return "datatable";
}
}
首页datatable.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
顺序 家庭名称 家庭Key 负责人 手机号 邮箱 家庭地址 创建时间 状态 操作
<td>${lise.address}
完整示例: SpringData-JPA_jb51.rar
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~