From 7ff672d46764cc086f76717b3e8aeb64905e5d63 Mon Sep 17 00:00:00 2001 From: zhangwei Date: Tue, 6 Mar 2018 14:44:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E9=A1=B5=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/nis/domain/Page.java | 219 ++++++------------------- 1 file changed, 49 insertions(+), 170 deletions(-) diff --git a/src/main/java/com/nis/domain/Page.java b/src/main/java/com/nis/domain/Page.java index a3ad883d3..0586434ac 100644 --- a/src/main/java/com/nis/domain/Page.java +++ b/src/main/java/com/nis/domain/Page.java @@ -4,7 +4,7 @@ package com.nis.domain; import java.util.ArrayList; -import java.util.HashMap; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -13,16 +13,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; -import org.apache.ibatis.mapping.ResultMap; -import org.apache.ibatis.mapping.ResultMapping; -import org.apache.ibatis.session.SqlSessionFactory; import com.fasterxml.jackson.annotation.JsonIgnore; import com.nis.util.Configurations; -import com.nis.util.Constants; import com.nis.util.CookieUtil; import com.nis.util.StringUtil; -import com.nis.web.service.SpringContextHolder; /** * 分页类 @@ -52,7 +47,7 @@ public class Page { private String orderBy = ""; // 标准查询有效, 实例: updatedate desc, name asc - private String fields ="";//制定资源的字段 + private String fields;//制定资源的字段 private String where; @@ -63,10 +58,9 @@ public class Page { private String message = ""; // 设置提示消息,显示在“共n条”之后 public Page() { - this.pageSize = pageSize; + this.pageSize = -1; } - /** * 构造方法 * @param request 传递 repage 参数,来记住页码 @@ -74,27 +68,11 @@ public class Page { */ public Page(HttpServletRequest request, HttpServletResponse response){ - this(request, response,Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); - - } - /** - * 构造方法 - * @param request 传递 repage 参数,来记住页码 - * @param response 用于设置 Cookie,记住页码 - * - */ - public Page(HttpServletRequest request, HttpServletResponse response,Class clazz){ - - this(request, response,clazz.getSimpleName(),Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); - - } - public Page(HttpServletRequest request, HttpServletResponse response,int defaultPageSize){ - - this(request, response,"",Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); + this(request, response, Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30))); } - public Page(HttpServletRequest request, HttpServletResponse response,String className, int defaultPageSize){ + public Page(HttpServletRequest request, HttpServletResponse response, int defaultPageSize){ try { // 设置页码参数(传递repage参数,来记住页码) String no = request.getParameter("pageNo"); @@ -111,7 +89,13 @@ public class Page { } // 设置页面大小参数(传递repage参数,来记住页码大小) - String size = request.getParameter("pageSize"); + String size = ""; + if(defaultPageSize==-1){ + size = "-1"; + }else{ + size = request.getParameter("pageSize"); + + } if (StringUtils.isNotBlank(size)) { if (StringUtils.isNumeric(size) || size.equals("-1")){ @@ -126,24 +110,20 @@ public class Page { } else { this.pageSize = defaultPageSize; } - //超出每页最大显示条数,取限制的最大条数 - if(this.pageSize > Constants.MAX_PAGE_SIZE){ - this.pageSize = Constants.MAX_PAGE_SIZE; - } String fields = request.getParameter("fields"); if (StringUtils.isNotBlank(fields)){ - fields=getFiledsSql(className, fields); this.setFields(fields); } // 设置排序参数 String orderBy = request.getParameter("orderBy"); if (StringUtils.isNotBlank(orderBy)){ - orderBy=getOrderBySql(className, orderBy); this.setOrderBy(orderBy); } - this.count=Integer.valueOf(Configurations.getIntProperty("page.count", -1)); + + this.setWhere(getWhere(request)); + } catch (Exception e) { e.printStackTrace(); @@ -334,8 +314,8 @@ public class Page { sb.append("
  • 当前 "); sb.append(" / "); - sb.append(" 条,"); + sb.append(" 页,"); sb.append("共 " + count + " 条"+(message!=null?message:"")+"
  • \n"); sb.insert(0,"
      \n").append("
    \n"); @@ -643,138 +623,37 @@ public class Page { public int getMaxResults(){ return getPageSize(); } - /** - * @Title: getFiledsSql - * @Description: 将fields的属性名称替换为字段名称 - * @param @param mapName - * @param @param fileds - * @param @return - * @param @throws Exception - * @return Map 返回类型 - * @author (DDM) - * @version V1.0 - */ - @JsonIgnore - public String getFiledsSql(String mapName,String fileds) throws Exception{ - String[] fieldsColoumn=null; - String orderByStr=""; - //所有字段名 - List columnList=new ArrayList(); - //所有属性名 - List propertyList=new ArrayList(); - //属性名称为key,字段名称为value - Map columnMap=new HashMap(); - - if(!StringUtil.isBlank(fileds)){ - //解析Fileds的字段/属性名称 - fieldsColoumn=fileds.split(","); - - //从resultMap中获取字段名称和属性名称 - if(fieldsColoumn != null){ - SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); - ResultMap map= sqlSessionFactory.getConfiguration().getResultMap(mapName+"Map"); - List mapping= map.getResultMappings(); - for(ResultMapping mapp:mapping){ - columnList.add(mapp.getColumn().toLowerCase()); - propertyList.add(mapp.getProperty()); - columnMap.put(mapp.getProperty(), mapp.getColumn()); - } - } - if(fieldsColoumn != null){ - fileds=""; - for (String column : fieldsColoumn) { - if(!StringUtil.isBlank(column)){ - column=column.trim(); - if(columnList.contains(column.toLowerCase())){ - fileds+=","+column; - }else if(propertyList.contains(column)){ - fileds+=","+columnMap.get(column).toString(); - } - } - } - if(!StringUtil.isBlank(fileds)){ - fileds=fileds.substring(1); - } - - } - - } - return fileds; - } - /** - * @Title: getOrderBySql - * @Description: 将orderBy的属性名称替换为字段名称 - * @param @param mapName - * @param @param orderBy - * @param @return - * @param @throws Exception - * @return Map 返回类型 - * @author (DDM) - * @version V1.0 - */ - @JsonIgnore - public static String getOrderBySql(String mapName,String orderBy) throws Exception{ - String[] orderByColoumn=null; - //所有字段名 - List columnList=new ArrayList(); - //所有属性名 - List propertyList=new ArrayList(); - Map columnMap=new HashMap(); - - if(!StringUtil.isBlank(orderBy)){ - //解析orderBy的字段/属性名称 - orderByColoumn=orderBy.split(","); - //从resultMap中获取字段名称和属性名称 - if(orderByColoumn != null){ - SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); - ResultMap map= sqlSessionFactory.getConfiguration().getResultMap(mapName+"Map"); - List mapping= map.getResultMappings(); - for(ResultMapping mapp:mapping){ - columnList.add(mapp.getColumn().toLowerCase()); - propertyList.add(mapp.getProperty()); - columnMap.put(mapp.getProperty(), mapp.getColumn()); - } - } - if(orderByColoumn != null){ - orderBy=""; - for (String column : orderByColoumn) { - if(!StringUtil.isBlank(column)){ - if(columnList.contains(replaceOrderBy(column))){ - orderBy+=","+column; - }else if(propertyList.contains(replaceOrderBy(column))){ - //如果是实体类名字则获取对应数据库名字+排序方式 - orderBy+=","+columnMap.get(replaceOrderBy(column)).toString() - +column.replace(replaceOrderBy(column), ""); - } - } - } - if(!StringUtil.isBlank(orderBy)){ - orderBy=orderBy.substring(1); - } - } - - } - return orderBy; - } - /** - * @Title: replaceOrderBy - * @Description: 去掉orderBy中的desc和asc - * @param @param str - * @param @return - * @return Map 返回类型 - * @author (DDM) - * @version V1.0 - */ - public static String replaceOrderBy(String str){ - if(!StringUtil.isBlank(str)){ - str=str.trim(); - str=str.replace(" asc",""); - str=str.replace(" ASC",""); - str=str.replace(" DESC",""); - str=str.replace(" desc",""); - str=str.trim(); - } - return str; - } +// /** +// * 获取 Spring data JPA 分页对象 +// */ +// public Pageable getSpringPage(){ +// List orders = new ArrayList(); +// if (orderBy!=null){ +// for (String order : StringUtils.split(orderBy, ",")){ +// String[] o = StringUtils.split(order, " "); +// if (o.length==1){ +// orders.add(new Order(Direction.ASC, o[0])); +// }else if (o.length==2){ +// if ("DESC".equals(o[1].toUpperCase())){ +// orders.add(new Order(Direction.DESC, o[0])); +// }else{ +// orders.add(new Order(Direction.ASC, o[0])); +// } +// } +// } +// } +// return new PageRequest(this.pageNo - 1, this.pageSize, new Sort(orders)); +// } +// +// /** +// * 设置 Spring data JPA 分页对象,转换为本系统分页对象 +// */ +// public void setSpringPage(org.springframework.data.domain.Page page){ +// this.pageNo = page.getNumber(); +// this.pageSize = page.getSize(); +// this.count = page.getTotalElements(); +// this.list = page.getContent(); +// } + }