分页调整获取where条件,针对时间类型以及包含空格的搜索条件做了调整,加入了alias一列用来当作表的别名

This commit is contained in:
wangxin
2018-03-09 20:59:13 +08:00
parent f1114d209f
commit fd6425772c
6 changed files with 585 additions and 153 deletions

View File

@@ -3,8 +3,9 @@
*/
package com.nis.domain;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@@ -16,8 +17,8 @@ import org.apache.commons.lang3.StringUtils;
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;
/**
* 分页类
@@ -50,7 +51,7 @@ public class Page<T> {
private String fields;//制定资源的字段
private String where;
private String alias;
private String funcName = "page"; // 设置点击页码调用的js函数名称默认为page在一页有多个分页对象时使用。
private String funcParam = ""; // 函数的附加参数,第三个参数值。
@@ -71,8 +72,20 @@ public class Page<T> {
this(request, response, Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30)));
}
public Page(HttpServletRequest request, HttpServletResponse response,String alias){
this(request, response, Integer.valueOf(Configurations.getIntProperty("page.pageSize", 30)),alias);
}
public Page(HttpServletRequest request, HttpServletResponse response, int defaultPageSize,String alias){
this.setAlias(alias);
this.initPage(request, response, defaultPageSize);
}
public Page(HttpServletRequest request, HttpServletResponse response, int defaultPageSize){
this.initPage(request, response, defaultPageSize);
}
private void initPage(HttpServletRequest request, HttpServletResponse response, int defaultPageSize){
try {
// 设置页码参数传递repage参数来记住页码
String no = request.getParameter("pageNo");
@@ -129,7 +142,6 @@ public class Page<T> {
e.printStackTrace();
}
}
/**
*
* @Title: getWhere
@@ -141,14 +153,65 @@ public class Page<T> {
* @throws
* @date 2016年8月17日 上午9:28:21
* @version V1.0
* wx:日期格式的数据用日期格式化函数格式化,带空格的数据加上引号
*/
private String getWhere(HttpServletRequest request) {
String format=Constants.SEARCH_DATEFORMAT;
SimpleDateFormat sdf=new SimpleDateFormat(format);
Map<String, String[]> requestMap = request.getParameterMap();
StringBuilder whereBuilder = new StringBuilder(512);
for(String paramName : request.getParameterMap().keySet()) {
if (paramName.startsWith("search")) {
whereBuilder.append(paramName.substring("search_".length()))
.append("=").append(requestMap.get(paramName)[0]).append(" and ");
if (requestMap.get(paramName)!=null&&paramName.startsWith("search_")&&StringUtils.isNotBlank(requestMap.get(paramName)[0])) {
String clomn=paramName.substring("search_".length());
String value=requestMap.get(paramName)[0].trim();
boolean isDate=false;
try {
sdf.parse(value);
isDate=true;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(clomn.endsWith("_start")){
clomn=clomn.substring(0,clomn.lastIndexOf("_start"));
if(StringUtils.isNotBlank(alias)) whereBuilder.append(alias.trim()+".");
whereBuilder.append(clomn).append(">=");
if(isDate){
whereBuilder.append("date_format('")
.append(value).append("','%Y-%m-%d %H:%i:%S')");
}else if(value.indexOf(" ")>-1){
whereBuilder.append("'").append(requestMap.get(paramName)[0]).append("'");
}else{
whereBuilder.append(requestMap.get(paramName)[0]);
}
whereBuilder.append(" and ");
}else if(clomn.endsWith("_end")){
clomn=clomn.substring(0,clomn.lastIndexOf("_end"));
if(StringUtils.isNotBlank(alias)) whereBuilder.append(alias.trim()+".");
whereBuilder.append(clomn).append("<=");
if(isDate){
whereBuilder.append("DATE_FORMAT('")
.append(value).append("','%Y-%m-%d %H:%i:%S')");
}else if(value.indexOf(" ")>-1){
whereBuilder.append("'").append(requestMap.get(paramName)[0]).append("'");
}else{
whereBuilder.append(requestMap.get(paramName)[0]);
}
whereBuilder.append(" and ");
}else{
if(StringUtils.isNotBlank(alias)) whereBuilder.append(alias.trim()+".");
whereBuilder.append(clomn).append("=");
if(isDate){
whereBuilder.append("date_format('")
.append(value).append("','%Y-%m-%d %H:%i:%S')");
}else if(value.indexOf(" ")>-1){
whereBuilder.append("'").append(requestMap.get(paramName)[0]).append("'");
}else{
whereBuilder.append(requestMap.get(paramName)[0]);
}
whereBuilder.append(" and ");
}
}
}
if (whereBuilder.length() > 0) {
@@ -624,6 +687,22 @@ public class Page<T> {
return getPageSize();
}
/**
* alias
* @return alias
*/
public String getAlias() {
return alias;
}
/**
* @param alias the alias to set
*/
public void setAlias(String alias) {
this.alias = alias;
}
// /**
// * 获取 Spring data JPA 分页对象
// */