首页 > 代码库 > java分页组件简单设计(贼简单)

java分页组件简单设计(贼简单)

        代码很简单,关键是思想。

        每个业务模块基本都会涉及到分页的应用,不管是普通的分页浏览还是瀑布流形式的浏览。分页可以减轻服务器的压力,可以节俭页面布局。在我们的分页简单组件设计中,主要是需要返回给客户端四个数据:列表对象、当前页码、每页记录最大条数、记录总数。

        列表对象:顾名思义,就是展示给用户看的当前页面记录;

        当前页码:主要是需要js来高亮;

        每页记录最大条数:一般是服务器设定

记录总数:js用来计算总页数使用


设计思想:

1.由于分页是一种可以公共使用的功能,所以可以开发成一个组件,这样可以避免开发者自定义以上四个数据的字段名称,造成维护上的麻烦。这样其实就可以封装到一个方法里面,在方法里面定义四个字段名称。后来考虑列表对象的字段名称应该拥有其自己实际意义,所以将其自定义,在方法里面只定义后三个字段。

/**
	 * 组装分页列表
	 * @param t
	 * @param totalCount
	 * @param page
	 * @param length
	 * @return
	 */
	@SuppressWarnings("unchecked")
	protected void setPageList(Object t, Integer totalCount, Integer page,
			Integer length){
		if(t instanceof Map){
			Map<String, Object> map = (Map<String, Object>)t;
			map.put("totalCount", totalCount);
			map.put("page", page);
			map.put("length", length);
		}else if(t instanceof Model){
			Model model = (Model)t;
			model.addAttribute("totalCount", totalCount);
			model.addAttribute("page", page);
			model.addAttribute("length", length);
		}
	}
定义了totalCount、page、和length三个字段来表示总记录数、当前页码、每页最大记录数。

  2.上面是定义返回给客户端的字段名称。还有一点需要注意的是怎样得到记录列表和符合条件的记录总数。

这个可以分开来取得,采用两个方法分别得到记录列表和记录总数(如果有缓存列表,则可以很方便的得到两个数据,否则就只有交互数据库了)。这种方式就是要求每次都要在业务层去从服务层取两次数据,如果一旦服务层独立部署,那么造成的结果就是每次分页都要网络传输两次数据,这个不是好的方法。故决定封装一个bean,该bean中包含这两个字段,这样在服务层将返回的是分页bean,从而只需要一次网络传输即可得到分页需要的数据。

代码如下:

public class PageListResult {

	private List<?> list;
	private long totalCount;
	
	
	public List<?> getList() {
		return list;
	}
	public void setList(List<?> list) {
		this.list = list;
	}
	public long getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(long totalCount) {
		this.totalCount = totalCount;
	}
	
	
}

  这样即可实现简单的分页组件。

菜鸟级别,大牛勿喷~拜谢!