`

mysql分页

阅读更多
package com.sfpay.framework.base.pagination;

import java.io.Serializable;
import java.util.Collection;
//Ipage接口
public interface IPage
    extends Serializable
{

    public abstract long getTotal();

    public abstract int getSize();

    public abstract int getIndex();

    public abstract long getTotalRecord();

    public abstract Collection getData();
}


package com.sfpay.framework.base.pagination.impl;

import com.sfpay.framework.base.pagination.IPage;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;

//Ipage实现类
public class Page
    implements IPage
{

    public Page()
    {
    }

    public Page(Collection data, long totalRecord, int index, int size)
    {
        this.data = ((Collection) (data != null ? data : ((Collection) (new ArrayList(0)))));
        this.totalRecord = totalRecord;
        this.size = size;
        this.index = index;
        total = (totalRecord - 1L) / (long)size + 1L;
    }

    public void setTotalRecord(long totalRecord)
    {
        this.totalRecord = totalRecord;
    }

    public long getTotalRecord()
    {
        return totalRecord;
    }

    public void setTotal(int total)
    {
        this.total = total;
    }

    public int getSize()
    {
        return size;
    }

    public long getTotal()
    {
        return total;
    }

    public int getIndex()
    {
        return index;
    }

    public Collection getData()
    {
        return data;
    }

    public String toString()
    {
        StringBuilder buf = new StringBuilder();
        Method methods[] = getClass().getMethods();
        boolean isFirst = true;
        int i = 0;
        for(int n = methods.length; i < n; i++)
            try
            {
                Method method = methods[i];
                if((method.getModifiers() & 1) == 1 && method.getDeclaringClass() != java/lang/Object && (method.getParameterTypes() == null || method.getParameterTypes().length == 0))
                {
                    String methodName = method.getName();
                    String property = null;
                    if(methodName.startsWith("get"))
                        property = (new StringBuilder(String.valueOf(methodName.substring(3, 4).toLowerCase()))).append(methodName.substring(4)).toString();
                    else
                    if(methodName.startsWith("is"))
                        property = (new StringBuilder(String.valueOf(methodName.substring(2, 3).toLowerCase()))).append(methodName.substring(3)).toString();
                    if(property != null)
                    {
                        Object value = method.invoke(this, new Object[0]);
                        if(isFirst)
                            isFirst = false;
                        else
                            buf.append(",");
                        buf.append(property);
                        buf.append(":");
                        if(value instanceof String)
                            buf.append("\"");
                        buf.append(value);
                        if(value instanceof String)
                            buf.append("\"");
                    }
                }
            }
            catch(Exception exception) { }

        return (new StringBuilder("{")).append(buf.toString()).append("}").toString();
    }

    private int size;
    private int index;
    private long total;
    private long totalRecord;
    private Collection data;
}

//PageSplit接口
public interface PageSplit<T> {
	
	/**
	 * 方法说明:
	 * 		查询总条数
	 * @return
	 * int
	 */
	public int queryTotalCount();
	
	/**
	 * 方法说明:
	 * 		查询返回的数据集合
	 * @param pageStart
	 * 		起始行
	 * @param pageSize
	 * 		行数
	 * @return
	 * List<T>
	 */
	public List<T> queryPageList(int pageStart, int pageSize);

}


//PageHandler
public class PageHandler {

	private final static Logger logger = LoggerFactory
			.getLogger(PageHandler.class);
	
	/**
	 * 方法说明:
	 * @param pageSplit
	 * 			分页接口
	 * @param pageSize
	 * 			每一页记录条数
	 * @param pageNo
	 * 			页码
	 * @return
	 * IPage<T> 分页取得的记录
	 */
	public static <T> IPage<T> execute(PageSplit<T> pageSplit, int pageSize, int pageNo) {
		List<T> dataList = null;
		IPage<T> page = null;
		try {
			int totalRecord = pageSplit.queryTotalCount();
			if (totalRecord > 0) {
				pageNo = (pageNo <= 0) ? 1 : pageNo;
				pageSize = (pageSize <= 0) ? 10 : pageSize;
				int pageStart = (pageNo - 1) * pageSize;
				dataList = pageSplit.queryPageList(pageStart, pageSize);
				page = new Page<>(dataList, totalRecord, pageNo, pageSize);
			}
			if (null == page) {
				page = new Page<>(new ArrayList<>(), 0, 1, 1);
			}
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
		return page;
	}
}

//service层调用
public void queryInvoiceInput(BeanBase bean) {

		bean.getExpData().put("page",
				PageHandler.execute(new PageSplit<Map<String, Object>>() {
					
					@Override
					public int queryTotalCount() {
						Map<String, String> value = bean.getDatas().get(0);
						PurviewUtil.getUserDeptString(bean);
						return invoiceInputDao.queryInvoiceInputCount(value);
					}

					@Override
					public List<Map<String, Object>> queryPageList(
							int pageStart, int pageSize) {
						return invoiceInputDao.queryInvoiceInput(bean.getDatas().get(0), pageStart, pageSize);
					}
				}, bean.getRows(), bean.getPage()));

	}
分享到:
评论

相关推荐

    JSP+MySql分页组件

    【JSP+MySQL分页组件】是Web开发中常见的功能,用于处理大量数据时提高页面加载速度和用户体验。在Web应用程序中,一次性加载所有数据可能导致页面响应慢,尤其是在数据库存储的数据量庞大的情况下。分页技术可以...

    asp mysql分页(超完美版本)

    ### ASP与MySQL分页技术详解 #### 一、引言 在Web开发中,当数据量庞大时,一次性展示所有数据不仅会导致页面加载缓慢,还会严重影响用户体验。因此,实现数据的分页显示变得尤为重要。本文将详细介绍如何在ASP...

    easyUI+MySQL分页

    本项目“easyUI+MySQL分页”旨在教你如何利用easyUI框架与MySQL数据库相结合,实现在Web页面上展示分页数据的效果。在这个过程中,我们将涉及到前端的JavaScript库easyUI,以及后端的MySQL数据库和可能用到的Java...

    PHP MYSQL分页代码

    本资源"PHP MYSQL分页代码"提供了一个实用的解决方案,结合了PHP和MySQL两种技术来实现高效的数据分页功能。 首先,让我们深入了解PHP和MySQL在分页中的角色。PHP是一种广泛使用的服务器端脚本语言,常用于动态网站...

    基于hibernate_mysql分页通用源码

    【标题】"基于hibernate_mysql分页通用源码"涉及的关键知识点主要集中在Java Web开发领域,特别是关于ORM框架Hibernate、关系型数据库MySQL、MVC框架Struts2以及分页技术的应用。以下是对这些核心概念的详细解释: ...

    java-web-mysql 分页demo

    二、MySQL分页查询 在MySQL中,我们可以使用`LIMIT`和`OFFSET`关键字来实现分页。`LIMIT`用于指定每页显示的数据条数,`OFFSET`用于指定从哪一条记录开始取数据。例如,要获取第2页(每页5条数据)的信息,SQL语句...

    封装好的php+mysql分页类

    这个"封装好的php+mysql分页类"提供了一种高效且可复用的方法来实现这一目标。以下是对该分页类的详细解析: 1. **类结构**: 分页类通常包含一些关键属性,如每页显示的记录数($limit)、当前页数($currentPage...

    PHP+MySql分页显示示例分析.

    以下是一个简单的PHP+MySQL分页显示的示例代码: ```php // 数据库连接 $conn = mysql_connect("localhost", "root", ""); // 设置每页显示记录数 $pagesize = 10; // 获取总记录数 $rs = mysql_query("SELECT ...

    MYSQL分页存储过程

    ### MySQL分页存储过程概述 分页存储过程是一种在数据库层面上实现数据分页的技术。相比应用程序级别的分页,它能更高效地处理数据,减少网络传输的数据量,提升系统性能。在MySQL中,我们可以通过创建存储过程来...

    mysql分页存储过程

    通过上述分析可以看出,这个MySQL分页存储过程实现了灵活且高效的分页查询功能。它不仅能够根据用户提供的参数动态地构建查询语句,还能够处理排序、分组等复杂需求。对于需要频繁进行分页查询的应用场景来说,这种...

    struts2+MySQL分页(精).

    ### Struts2与MySQL分页实现详解 #### 一、背景与目的 随着Web应用的不断发展,用户对于信息展示的需求也越来越高。为了更好地管理和展示大量数据,分页技术成为了一个不可或缺的功能。本文将详细介绍如何利用...

    高效的MySQL分页

    总结来说,实现高效的MySQL分页查询需要考虑索引优化、使用新的SQL特性,以及借助合适的开发工具。同时,持续关注数据库性能监控,及时调整和优化查询策略,对于保持系统稳定和提升用户体验具有重要意义。

    Mysql分页通用存储过程

    Mysql分页通用存储过程

    PHP+mysql分页原理和实例应用.pdf

    接下来,我们将详细介绍PHP+MySQL分页的原理及实例应用。 首先,我们需要了解MySQL数据库中实现分页的核心SQL语句——LIMIT子句。在SQL语句中,LIMIT用于限制查询结果的数量,它接受一个或两个数字参数,表示从哪一...

    mysql分页实例

    在这个"mysql分页实例"中,我们将深入探讨MySQL的分页查询技术,并提供可以直接引用的分页类。 首先,我们要理解SQL中的基础分页查询语句。在MySQL中,最常用的分页查询方法是结合`LIMIT`和`OFFSET`关键字。`LIMIT`...

    mysql 分页源代码

    "mysql 分页源代码"这个主题就涉及到如何通过编程技术实现数据库查询的分页功能,以提高性能并提供良好的用户界面。这里我们将详细探讨使用JSP、JavaBean、JDBC以及MySQL进行分页的具体步骤和原理。 首先,JSP...

    MySQL分页实现

    4. **MySQL分页工具** 在实际开发中,许多开发者会选择使用ORM(对象关系映射)框架,如Hibernate、MyBatis等,它们通常提供封装好的分页API,简化了数据库分页的操作。同时,也有一些数据库管理工具,如MySQL ...

    mysql分页的limit参数简单示例

    到此这篇关于mysql分页的limit参数的文章就介绍到这了,更多相关mysql分页limit参数内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网! 您可能感兴趣的文章:详解MySQL的limit...

    winform mysql 分页

    本示例中,我们将探讨如何在WinForm应用程序中实现MySQL数据库的分页功能,这在处理大量数据时非常实用,可以提高用户体验并减少系统资源的消耗。 首先,我们需要在Visual Studio 2010中创建一个新的WinForm项目。...

    PHP+MYSQL分页代码

    本主题“PHP+MYSQL分页代码”着重讲解如何在PHP后端和MySQL数据库配合下实现高效、实用的分页功能。下面我们将深入探讨相关知识点。 1. **SQL查询与LIMIT子句**: 在MySQL中,`LIMIT`子句用于在查询结果集中限制...

Global site tag (gtag.js) - Google Analytics