求助:ofbiz的entityEngine如何处理大数量的查询?

fishandfly
03-06-20 4 290

如果我的查询结果中包含20万余条数据,而我仅仅想显示其中的50条,我应该如何处理!

我看ofbiz的entityEngine好像只能查询后返回List,这对于大数量的查询非常失败的!不知道ofbiz有没有其他的办法完成查询!

谢谢!

wys1978
2003-06-20 17:31

使用findListIteratorByCondition 得到 EntityListIterator
使用EntityListIterator.getPartialList(int start, int number)得到你要用的数据

需要注意的时候ELI是保持数据库连接的, 要及时close.

fishandfly
2003-06-22 21:47

Thank you !
但是我还要得到findListIteratorByCondition 查询后记录的数量,我如何去做呢?

wys1978
2003-06-22 23:44

先调用last(), 再调用currentIndex()得到总数。

不过这样有个缺点,应为它是调用ResultSet的last方法来实现的, 而不同的jdbc driver在处理ResultSet.last()有不同的表现,mysql的driver会依次调用next直到最后(mm-mysql-jdbc是这样的, 最新Connector/J driver没有看过代码不知道),所以性能上在处理大数据量会有问题, 而Oracle的thin的driver好像是有特别优化过,没有实验过, 不知道具体的情况。

如果你的项目有这样的情况的话,建议做一下实验, 方便的话,让我知道结果, 谢谢。

fishandfly
2003-06-23 19:46

谢谢!我试验一下!

看来ofbiz是不能支持一些类似sum,max,min,count这样的函数了!
:(