刚在 Javaeye 上看到一篇关于 通用数据库分页方案 的帖子 http://daquan198163.javaeye.com/blog/24772 ,
说实话我很讨厌这样的帖子,所以也懒得看, 对Java App来说 难道只能说那些有所谓的通用、架构、方案 才够 cool 吗 ? 也许是我最近两年一直在做互联网产品的缘故,所以一见到这些词汇,就很生气,不为别的,只为我喜欢简洁的东西,我虽然用Java 写程序,可我讨厌现在的 Hibernate、Spring 甚至一下 web framework ,所以很多时候我都自己写,我还是那样的喜欢 JDBC、 Servlet 等,是的,我就是喜欢这样的东西 ...
一个应用,用的着去背负那么多没必要的东西吗,就像一个web app ,如果我采用的 webwork 后,接下来会轻易的去切换她的web framework 吗 ? 不可能,或者说很不容易,所以这个时候就没有什么必要考虑那些不切实际的东西,所以这个所谓的《通用数据库分页方案》在我看来也没什么必要,一上来已经无缘无故的背负了通用,呵呵,能不累吗 ?
下面这个是我在Boar 开源项目中 ,写的用于分页的 Class ,在我看来,只要够用就行 ...
/**
* Copyright (C) 2006 the original author or authors.
*
* This software is published under the terms of the GNU Public License (GPL),
* a copy of which is included in this distribution.
*/
package com.boar;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* <p>Filters lists .</p>
*
* @author <a href="zhuaming@gmail.com">Ben </a>
*
*/
public class PerPageResultFilter {
private List results ;
private int startIndex = 0;
private int numResults = -1;
public void setResults(List results) {
this.results = results;
}
public void setNumResults(int numResults) {
if (numResults != -1 && numResults < 0) {
throw new IllegalArgumentException("numResults cannot be less than 0.");
}
this.numResults = numResults;
}
public void setStartIndex(int startIndex) {
if (startIndex < 0) {
throw new IllegalArgumentException("A start index less than 0 is not valid.");
}
this.startIndex = startIndex;
}
public List getFilterResult() {
if (results == null) {
throw new NullPointerException("results is null.");
}
List filteredResults = new ArrayList();
Iterator sortedIter = results.iterator();
for (int i = 0; sortedIter.hasNext() && filteredResults.size() < numResults; i++) {
Object result = sortedIter.next();
if (i >= startIndex) {
filteredResults.add(result);
}
}
return filteredResults;
}
}