代码很简单,关键是思想。
每个业务模块基本都会涉及到分页的应用,不管是普通的分页浏览还是瀑布流形式的浏览。分页可以减轻服务器的压力,可以节俭页面布局。在我们的分页简单组件设计中,主要是需要返回给客户端四个数据:列表对象、当前页码、每页记录最大条数、记录总数。
列表对象:顾名思义,就是展示给用户看的当前页面记录;
当前页码:主要是需要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; } }
这样即可实现简单的分页组件。
菜鸟级别,大牛勿喷~拜谢!
java分页组件简单设计(贼简单)
时间: 2024-11-07 16:37:27