假设我们必须从表中获取5条记录,但我的where子句匹配数据库中的25k条记录。那么在ofbiz框架中有没有办法只选择5条记录而不是从数据库中获取一个列表然后从列表中只取5个?
如果无法限制(因为ofbiz API与数据库无关),我的其他选择是什么?
答案 0 :(得分:3)
我建议你看一下这个entity engine cookbook
基本上,您可以从数据库中获取有限的行集:
// 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();
此外,如果您希望将直接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