查询,分页封装
来源:互联网 发布:淘宝售前客服怎么做 编辑:程序博客网 时间:2024/06/07 23:38
一,后台查询,分页封装
1.BaseQuery.java:
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class BaseQuery implements Serializable {
private Integer pageSize = 5;
private Integer currentPage = 1;
private Integer startRow = 0;
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
if(pageSize == null || pageSize <= 0) {
return;
}
this.pageSize = pageSize;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
if(currentPage == null || currentPage <= 0) {
return;
}
this.currentPage = currentPage;
}
public Integer getStartRow() {
if(currentPage == null || currentPage < 0 || pageSize == null && pageSize < 0) {
return 0;
}
startRow = (currentPage - 1) * pageSize;
return startRow;
}
public Map<String, Object> bulid() {
Map<String, Object> params = new HashMap<String, Object>();
params.put("pageSize", this.pageSize);
params.put("currentPage", this.currentPage);
params.put("startRow", this.getStartRow());
return params;
}
}
2.查询类继承BaseQuery,以UserQuery.java为例。
import java.util.Map;
public classUserQuery extends BaseQuery {
private Stringname;
public String getName() {
returnname;
}
public void setName(String name) {
this.name =name;
}
public Map<String, Object> build() {
Map<String, Object> params = super.bulid();
params.put("name",name);
returnparams;
}
public String queryString() {
StringBuilder sb =new StringBuilder();
sb.append("name=");
sb.append(name ==null ? "" :name);
return sb.toString();
}
}
3.QueryResult.java:
import java.io.Serializable;
import java.util.*;
/**
* 分页查询结果
* @param <T>
*/
public class QueryResult<T> implements Serializable {
private Integer totalPage;//总页数
private Integer amount;//总条数
private Collection<T> resultList = new ArrayList<T>();//当前页数据集合
private BaseQuery query;
public Integer getTotalPage() {
return totalPage;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
if (amount == null) {
return;
}
if (query == null) {
return;
}
int pageSize = query.getPageSize();
int mod = amount % pageSize;
int page = amount / pageSize;
totalPage = (mod == 0 ? page : page + 1);
this.amount = amount;
}
public Collection<T> getResultList() {
return resultList;
}
public void setResultList(Collection<T> resultList) {
this.resultList = resultList;
}
public BaseQuery getQuery() {
return query;
}
public void setQuery(BaseQuery query) {
this.query = query;
}
public Integer getNextPage() {
Integer nextPage = query.getCurrentPage() + 1;
return nextPage > totalPage ? -1 : nextPage;
}
public List<Integer> pageNumbers() {
if(totalPage == 0) {
return Collections.EMPTY_LIST;
}
List<Integer> pages = new ArrayList<Integer>();
for(int i = 1; i<= totalPage; i++) {
pages.add(i);
}
return pages;
}
//***************************utils*****************************//
public Map<String, Object> propertyMap() {
Map<String, Object> pm = new HashMap<String, Object>(5);
pm.put("amount", this.amount);
pm.put("totalPage", this.totalPage);
pm.put("resultList", this.resultList);
if (query != null) {
pm.putAll(query.build());
}
return pm;
}
}
二,前台用velocity的宏定义显示分页。
1.list_user.vm:
<div class="content">
<form action="list_user.jhtml" method="post">
<label>姓名</label>
<input type="text" name="name" value="$!{query.name}" />
<input type="submit" value="查询">
</form>
<table class="table1" width="100%" style="margin-top: 20px;">
<tr class="headline">
<td>借款人姓名</td>
</tr>
#foreach( $user in $!users )
<tr>
<td>$!user.name</td>
</tr>
#end
</table>
#pagination("list_user.jhtml?$!{query.queryString()}" $!queryResult)
</div>
2.macro.vm
#macro(pagination $targetUrl $queryResult)
<div id="kkpager"></div>
<script type="text/javascript" src="/system-web/lib/kkpager.min.js"></script>
<script type="text/javascript">
//init
$(function(){
//生成分页
//有些参数是可选的,比如lang,若不传有默认值
kkpager.generPageHtml({
//当前页码
pno : $!{query.currentPage},
//总页码
total : $!{queryResult.totalPage},
//总数据条数
totalRecords : $!{queryResult.amount},
//链接前部
hrefFormer : '$targetUrl',
//链接尾部
hrefLatter : '',
getLink : function(n){
if (n == 1){
return this.hrefFormer;
}
return this.hrefFormer + "&page="+n;
}
});
});
</script>
#end
3.使用velocity配置引入macro.vm
a. 在spring-velocity.xml配置中加入macroHelper:
<beanid="viewResolver"class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
<propertyname="exposeSpringMacroHelpers"value="true"/>
</bean>
b. 在velocity.properties中加入:velocimacro.library.autoreload=true
velocimacro.library=macro.vm
- 查询,分页封装
- 封装PageModel分页实现查询功能
- DRP封装PageModel实现分页查询
- 封装PageModel分页实现查询功能
- 分页查询产品信息,第六步;封装结果
- hibernate学习教程-封装分页查询
- Hibernate Criteria查询之多表连接分页-2【分页封装】
- C#分页面向对象封装[支持多表连接查询分页]-教学示范版--分页实现
- Mybatis封装分页查询的java公用类
- 数据库分页查询(Sql封装及存储过程)
- Springmvc+mybatis+maven查询分页完美封装版
- Mybatis封装分页查询的java公用类
- scala实现hbase的分页查询,并封装PageInfo
- 【SSH】——封装参数不确定的分页查询
- Mybatis封装分页查询的java公用类(oracle)
- Mybatis 分页查询数据(借用map来封装参数)
- 封装分页
- 分页封装
- 从零开始学习jQuery (六) AJAX快餐
- Codeforces Round #364 (Div. 2) D. As Fast As Possible 【二分+贪心+验证】
- hibernate--对象类型
- Service启动流程源码分析之startService(一)
- 从零开始学习jQuery (七) jQuery动画-让页面动起来!
- 查询,分页封装
- Linux虚拟内存
- Android Studio 解决 com.android.application 找不到
- #88 Lowest Common Ancestor
- 从零开始学习jQuery (八) 插播:jQuery实施方案
- SpringMVC4.0以后版本返回json格式数据问题
- 手机通知栏
- 树莓派驱动6轴传感器MPU6500与SPI初体验(一)
- JAVA_WEB设计模式3