回答

收藏

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

技术问答 技术问答 202 人阅读 | 0 人回复 | 2023-09-14

假设我们只需要从一个表中获取5条记录,但是我的where子句与数据库中的25k条记录匹配。那么,ofbiz框架中是否有一种方法可以只选择5条记录,而不是从数据库中获取列表,然后仅从列表中获取5条记录?$ z, ~3 c/ ]8 F) [
如果不可能达到限制(因为ofbizAPI与数据库无关),我还有其他选择吗?
- {- Y7 j4 h5 u4 p+ p! H; w6 C                " Y+ Y! f2 e. o2 T% B
解决方案:
$ T& p4 y" |4 M1 I7 s               
, l- n+ h3 s5 G+ H. o+ X' H8 C! G! V7 y5 V

7 t* A# @6 B+ p+ C" d/ j( I                我建议您看看这个实体引擎食谱7 |  ~# c5 K* t3 j# _
本质上是为了从数据库中获取有限的行集,您可以这样做:
! v/ m$ T% _6 U" `+ [// first get a list iterator
  S" a8 C- E- [: M+ X1 a6 @; j7 PproductsELI = delegator.findListIteratorByCondition(&quotroduct",
+ d2 h5 ]& q, u3 C7 E% B6 ]2 y6 v6 V  new EntityExpr("productId", EntityOperator.NOT_EQUAL, null), " x1 h  g. P# s' K$ I0 d
                  UtilMisc.toList("productId"), null);
, J# H2 U7 K. H4 p5 a// then get a partial list by count TO RETURN first 5 records  V. U$ N" x, R
productsELI.getPartialList(0, 5);! W- ^' X% T$ U
// and finally just close the iterator6 [6 t% _' U; P0 i9 @' f
productsELI.close();
! a0 s+ b; i) N" T( Y" P& H1 e另外,如果您希望将 直接SQL 发送 到数据库, 则只需执行以下操作:
, U* w* w% m- {  b& D// gets the helper (localmysql, localpostgres, etc.) for your entity group org.ofbiz, L7 q9 l' E0 \0 i9 ]
String helperName = delegator.getGroupHelperName("org.ofbiz");
! i/ |- [( `& B0 n# E1 l4 u6 }- ESQLProcessor sqlproc = new SQLProcessor(helperName);
' |/ L6 K% k; `2 jsqlproc.prepareStatement("SELECT * FROM PARTY LMIT 0, 5");
( {' L* G" ~8 K# O3 XResultSet rs1 = sqlproc.executeQuery();
, Y% }, E4 u4 N7 [$ f' F/ a// and then get your data from ResultSet like regular JDBC
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则