java web 查询类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vcshcn/article/details/38408229

PageResult 类用来存放查询结果

public class PageResult<T> {

	private Query query;
	private int count;
	private List<T> results;
	private int pageNO;
	private int pageSize;
	private int pageCount;
	
	public PageResult(Query query, List<T> results, int count, int pageNO, int pageSize) {
		this.query = query;
		this.results = results;
		this.count = count;
		this.pageNO = pageNO;
		this.pageSize = pageSize;
		if (count % pageSize == 0) {
			pageCount = count / pageSize;
		}
		else {
			pageCount = count / pageSize + 1;
		}
	}

        ......


Query类用来存放查询条件

public class Query extends java.util.HashMap<String, Object> {

	private static Log log = LogFactory.getLog(Query.class);
	
	public static final String DEFAULT_QUERY_NAME = "query";
	public static final String PAGENO_NAME = "pageNO";
	public static final String PAGESIZE_NAME = "pageSize";
	public static final String OFFSET_NAME = "OFFSET";
	public static final String ROWS_NAME = "ROWS";

	public final static Integer DEFAULT_PAGENO = new Integer(1);
	public final static Integer DEFAULT_PAGESIZE = new Integer(15);
	
	private final String name;
	private Integer pageNO;
	private Integer pageSize;

	public String getName() {
		return name;
	}

	public Query() {
		this(DEFAULT_QUERY_NAME);
	}

	public Query(String name) {
		this(name, DEFAULT_PAGENO);
	}

	public Query(Integer pageNO) {
		this(DEFAULT_QUERY_NAME, pageNO);
	}
	
	public Query(String name, Integer pageNO) {
		this(name, pageNO, DEFAULT_PAGESIZE);
	}
	
	public Query(Integer pageNO, Integer pageSize) {
		this(DEFAULT_QUERY_NAME, pageNO, pageSize);
	}
	
	public Query(String name, Integer pageNO, Integer pageSize) {
		this(name, pageNO, pageSize, null);
	}
	
	public Query(Integer pageNO, Integer pageSize, Map<String, Object> params) {
		this(DEFAULT_QUERY_NAME, pageNO, pageSize, params);
	}

	public Query(String name, Integer pageNO, Integer pageSize, Map<String, Object> params) {
		if (params != null) {
			putAll(params);
		}
		if (pageNO == null) {
			pageNO = DEFAULT_PAGENO;
		}
		if (pageSize == null) {
			pageSize = DEFAULT_PAGESIZE;
		}
		
		this.name = name;
		this.pageNO = pageNO;
		this.pageSize = pageSize;
		
		put(PAGENO_NAME, pageNO);
		put(PAGESIZE_NAME, pageSize);
	}

	@Override
	public Object put(String key, Object value) {
		if (PAGENO_NAME.equals(key)) {
			this.pageNO = (Integer) value;
			compute(pageNO, pageSize);
		}
		else if (PAGESIZE_NAME.equals(key)) {
			this.pageSize = (Integer) value;
			compute(pageNO, pageSize);
		}
		
		if (value == null
		|| (value instanceof String && ((String)value).isEmpty())
		) {
			return null;
		}

		return super.put(key, value);			
	} 
	
	private void compute(int pageNO, int pageSize) {
		// oracle
		// int offset = (pageNO - 1) * pageSize + 1;
		// int rows = offset + pageSize - 1;
		
		// mysql
		int offset = (pageNO - 1) * pageSize ;
		int rows = offset + pageSize;
		
		put(OFFSET_NAME, new Integer(offset));
		put(ROWS_NAME, new Integer(rows));
	}
	
}


PagingUtil 用来创建查询对象Query

public class PagingUtil {

	/** 是否需要清除Session */
	public final static String RESEARCH = "research";
	/** 指定Session中存储Query的key名称  */
	public final static String HTML_QUERY_NAME = "query";
	
	public static Query create() {
		return new Query();
	}
	
	public static Query create(String name) {
		return new Query(name);
	}

//	public static Query create(Integer pageNO, Integer pageSize) {
//		return new Query(pageNO, pageSize);
//	}
//
//	public static Query create(Integer pageNO, Integer pageSize) {
//		return new Query(pageNO, pageSize);
//	}
//
//	public static Query create(Integer pageNO, Integer pageSize, Map<String, Object> params) {
//		return new Query(pageNO, pageSize, params);
//	}
	
	/**
	 * Struts2 shortcut,基于struts2的快捷方式
	 * @return
	 */
	public static Query get() {
		return get(ServletActionContext.getRequest());
	}
	
	public static Query get(HttpServletRequest request) {
		HttpSession session = request.getSession();
		
		String SessionKey = Query.DEFAULT_QUERY_NAME;
		if (request.getParameter(HTML_QUERY_NAME) != null) {
			SessionKey = request.getParameter(HTML_QUERY_NAME);
		}

		String research = request.getParameter(PagingUtil.RESEARCH);
		if (research != null) {
			switch (research) {
				case "1":
				case "y":
				case "Y":
				case "yes":
				case "YES":
				case "true":
				case "TRUE":
					session.removeAttribute(SessionKey);
			}
		}
		// it's req from menu
		String nav = request.getParameter("_from");
		if (nav != null) {
			session.removeAttribute(SessionKey);
		}
		
		Query query = (Query) session.getAttribute(SessionKey);
		if (query == null) {
			query = create(SessionKey);	// and store sessionkey to query, same time
			session.setAttribute(query.getName(), query);
		}
		
		// put page no. to query object
		String pn = request.getParameter(Query.PAGENO_NAME);
		if (pn != null && pn.length()>0 ) {
			try { 
				Integer pageNO = Integer.valueOf(pn);	
				query.put(Query.PAGENO_NAME,  pageNO);
			} catch (java.lang.NumberFormatException e) {}
		}

		// put session pagesize to query object
		{
			User user = (User) ActionContext.getContext().getSession().get(User.SESSION_KEY);
			if (user.getCustom() != null) {
				Integer pageSize = user.getCustom().getPagesize();
				if (pageSize != null) {
					query.put(Query.PAGESIZE_NAME,  pageSize);
				}
			}
		}
		
		// put request pagesize to query object
		String ps = request.getParameter(Query.PAGESIZE_NAME);
		if (ps != null && ps.length()>0) {
			try { 
				Integer pageSize = Integer.valueOf(ps);	
				query.put(Query.PAGESIZE_NAME,  pageSize);
			} catch (java.lang.NumberFormatException e) {}
		}
	
		return query;
	}

}

这样在Action里使用

Query query = PagingUtil.get();
query.put("name", name);
PageResult<Employee> userPage = employeeService.queryEmployeePage(q);


html是这样

<div class="SearchForm">
	<header>Search Org</header>
	<form action="ListOrg.do" class="QueryForm">
		<input type="hidden" name="research" value="1">
		<section>
			<div>
				<Label>Name</Label>
				<input type="text" autofocus="autofocus" name="name" value="${name }">
			</div>
		</section>
		<footer>
			<input type="submit">
		</footer>
	</form>
</div>


猜你喜欢

转载自blog.csdn.net/vcshcn/article/details/38408229