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;
	}

}

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

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

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

时间: 2024-11-07 16:37:27

java分页组件简单设计(贼简单)的相关文章

&quot;简单设计&quot;的一点思考

简单设计是Xp技术实践中开发实践的核心实践,“简单也是价值观中智力色彩最强烈的”,然而,提到简单设计,大家更觉得像原则或者价值观,感觉上还是比较泛,我们不妨从下面的几个角度看一下  1. 为什么要简单设计 <1>. 简单的代码更容易读懂. <2>. 好的设计更能应对变化.  这两点是基于成本和收益考虑的,这里的价值是时间及金钱.更快的满足需求,减少复杂带来的故障排查.修复成本,代码大量修改或者重写成本.  2. 什么是简单设计 对一个团队来讲,简单设计就是团队中每个人都能轻松的读懂

java设计之简单的JAVA计算器

做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........ 先展示一下效果....,额,当然不是这个样子....   ---> 代码: 1 package dialog_color; 2 3 import java.awt.BorderLayout; 4 import java.awt.Color; 5 import java.awt.Container; 6 import java.awt.FlowLayout; 7 import jav

asp.net mvc4+mysql做一个简单分页组件(部分视图)

在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstrap分页组件,这可以参考http://v3.bootcss.com/components/. 先将生成项目效果截图呈上: 这里有需要预先知道的,是mysql分页查询与mssql分页查询实现不同点在于,mysql支持limit语句,limit格式为 limit pageIndex*pageSize,p

最简单的element分页组件二次封装

我感觉是最简单的, 因为我看别人的实现,要么带sync,要么传父组件函数. 而我这个,我觉得隔离得比较好. pagnation.vue(父组件传一个pageRequest过来,分页组件返回给父组件一个refreshPageRequest) ) <template> <div> <div class="toolbar" style="padding:10px;"> <el-pagination layout="tot

电子商务系统的设计与实现(十三):分页组件,从前到后,从JS到Java

一.概述   学习实践Web开发5年多了,直到今天,我才算真正实现了最基本最常用的分页组件. 包括:    a.前端JS异步加载并渲染:    b.前端JSP.Freemarker.Struts标签渲染:    c.后端分页       自己写具体的分页算法和逻辑.       使用Mybatis分页插件. 今天,重点介绍下前端JS异步分页,简短介绍下后端Java提供数据.  二. 关键数据结构 public class PageVo { /** 总记录数 */ protected Intege

基于Vue的简单通用分页组件

分页组件是每一个系统里必不可少的一个组件,分页组件分为两部分.第一部分是模版部分,用于显示当前分页组件的状态,例如正在获取数据.没有数据.没有下一页等等:第二部分是分页数据对象,用于封装一个分页组件的属性和方法,例如获取数据的 url.当前第几页(page).每次加载条数(count).一共有多少页(totalPage)等等,方法可能会有上一页.下一页.处理数据等等. 分页数据对象 import base from '@/api/base' export default class Pagina

路飞项目搭建5 课程模块: 表设计,表关系优化,群查接口模块(分页组件,搜索组件,排序组件)

课程 准备工作 """ 1)创建course应用 2)dev中注册 3)建立子urls完成路由分发 4)配置课程业务相关表,并录入测试数据(见课件) 5)完成课程分类与课程两个群查接口 """ 课程分类群查接口 serializers.py from rest_framework import serializers from . import models class CourseCategorySerializer(serializers.M

java语言及其垃圾回收机制简单概述

 一.java 语言概述 Java 语言是一门纯粹的面向对象编程语言,它吸收了c++语言的各种优点.又摈弃了c++里难以理解的多继承,指针等概念因此Java语言具有功能强大和简单易用两个特征. Java语言的几个重要概念如下: J2ME:主要用于控制移动设备和信息家电等有限存储设备 J2SE:整个java技术的核心和基础, J2EE:java技术中应用最最广泛的部分,它提供了企业应用开发相关的完整的解决方案. API: 核心类库 JRE:运行Java程序所必须的环境的集合,包含JVM标准实现及J

JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)

一.背景         之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid.不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现.    回到武汉工作后,我自己利用业余实践完善自己的官网,从前端到后端,都是自己一个人亲自搞定.    第1个分页的需求是,文章下方的评论,异步加载.第2个需求是,表格管理,比如后台管理系统,经常需要列出user.log等表的记录.   二.实例 <table class="table tab