NC65 分页 工具类

分页数据查询类:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值