Поддерживает ли API делегатора Apache OFBiz извлечение списка записей из базы данных по лимиту или смещению

Допустим, нам нужно получить только 5 записей из таблицы, но мое предложение where соответствует 25 тысячам записей в базе данных. Итак, есть ли способ в ofbiz framework просто выбрать 5 записей, а не получать список из базы данных, а затем брать только 5 из списка?

Если ограничение невозможно (поскольку ofbiz API не зависит от базы данных), каковы другие альтернативы?


person anubhava    schedule 23.03.2011    source источник


Ответы (1)


Я бы посоветовал вам заглянуть в эту поваренную книгу Entity Engine.

По сути, для получения ограниченного набора строк из базы данных вы должны сделать:

// 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
person anubhava    schedule 24.03.2011
comment
Как вы можете взять параметр типа String в конструкторе SQLProcessor? В конструкторе SQLProcessor нет параметра типа String. - person Newaz Sharif Amit; 07.08.2016