分页数据查询类:
package nc.vo.pubapp.bill.pagination.util;
import nc.impl.pubapp.pattern.database.DataAccessUtils;
import nc.ui.querytemplate.querytree.IQueryScheme;
import nc.vo.pubapp.pattern.data.IRowSet;
import nc.vo.pubapp.query2.sql.process.QuerySchemeProcessor;
import nc.vo.pubapp.query2.sql.process.QuerySchemeUtils;
public class PageDataQueryUtils {
public static String[] queryAllPksByQueryScheme(IQueryScheme queryScheme) {
StringBuffer sql = new StringBuffer();
QuerySchemeProcessor processor = new QuerySchemeProcessor(queryScheme);
String mainAlias = processor.getMainTableAlias();
String keyColumn =
QuerySchemeUtils.getMainBean(queryScheme).getTable()
.getPrimaryKeyName();
sql.append(" select distinct ");
sql.append(mainAlias);
sql.append(".");
sql.append(keyColumn);
sql.append(processor.getFinalFromWhere());
DataAccessUtils dao = new DataAccessUtils();
IRowSet rowset = dao.query(sql.toString());
String[] keys = rowset.toOneDimensionStringArray();
return keys;
}
}
分页工具类:
package nc.vo.pubapp.bill.pagination.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nc.vo.pubapp.pattern.model.entity.bill.IBill;
import nc.vo.pubapp.pattern.pub.Constructor;
public class PaginationUtils {
public static <T extends IBill> T[] filterNotExistBills(T[] bills,
String[] pks) {
if (bills == null || bills.length == 0) {
return bills;
}
Map<String, T> billMap = PaginationUtils.wrappBillMap(bills);
List<T> retBills = new ArrayList<T>();
for (String id : pks) {
if (billMap.containsKey(id) && billMap.get(id) != null) {
retBills.add(billMap.get(id));
}
else {
retBills.add(null);
}
}
return (T[]) retBills
.toArray(Constructor.construct(bills[0].getClass(), 0));
}
public static List<String> getFistPageNeedQryList(String[] objectPks,
int pageSize) {
return PaginationUtils.getNeedQryList(objectPks, 0, pageSize);
}
public static List<String> getNeedQryList(String[] objectPks, int pageIndex,
int pageSize) {
List<String> needQryPks = new ArrayList<String>();
int upperIndex =
PaginationUtils.getUpperIndex(objectPks, pageIndex, pageSize);
for (int i = pageIndex * pageSize; i <= upperIndex; i++) {
String pk = objectPks[i];
needQryPks.add(pk);
}
return needQryPks;
}
public static <T extends IBill> Map<String, T> wrappBillMap(T[] bills) {
Map<String, T> billMap = new HashMap<String, T>();
for (T bill : bills) {
billMap.put(bill.getPrimaryKey(), bill);
}
return billMap;
}
private static int getUpperIndex(String[] objectPks, int pageIndex,
int pageSize) {
int upperIndex =
(pageIndex + 1) * pageSize - 1 > objectPks.length - 1 ? objectPks.length - 1
: (pageIndex + 1) * pageSize - 1;
return upperIndex;
}
}