Apache OFBiz delegator API 是否支持按限制或偏移量从数据库获取记录列表

anu*_*ava 4 sql database api ofbiz

假设我们只需从表中获取 5 条记录,但我的 where 子句匹配数据库中的 25k 条记录。那么框架中有没有一种方法ofbiz可以只选择 5 条记录,而不是从数据库中获取一个列表,然后从列表中只取出 5 条记录呢?

如果限制不可能(因为ofbizAPI 与数据库无关),我的其他选择是什么?

anu*_*ava 5

我建议你看看这本实体引擎食谱

本质上,为了从数据库获取有限的行集,您可以执行以下操作:

// first get a list iterator
productsELI = delegator.findListIteratorByCondition("Product", 
  new EntityExpr("productId", EntityOperator.NOT_EQUAL, null), 
                  UtilMisc.toList("productId"), null);

// then get a partial list by count TO RETURN first 5 records
productsELI.getPartialList(0, 5);

// and finally just close the iterator
productsELI.close();
Run Code Online (Sandbox Code Playgroud)

另外,如果您希望将SQL 直接发送到数据库,那么只需这样做:

// gets the helper (localmysql, localpostgres, etc.) for your entity group org.ofbiz
String helperName = delegator.getGroupHelperName("org.ofbiz");
SQLProcessor sqlproc = new SQLProcessor(helperName);
sqlproc.prepareStatement("SELECT * FROM PARTY LMIT 0, 5");
ResultSet rs1 = sqlproc.executeQuery();

// and then get your data from ResultSet like regular JDBC
Run Code Online (Sandbox Code Playgroud)