2

这篇关于使用 Apache iBatis SqlMaps 进行分页的好文章指出,如果我们像示例中那样调用 queryForList API,iBatis 会使用数据库游标进行物理分页,如果可用,则使用 ResultSet.absolute(position):

final List<product> queryForList = sqlMapClient.queryForList("SELECT",  
          parameter, paginationContext.getSkipResults(),  
          paginationContext.getMaxResults());  

在 DataSource 由通过 jdbc (ojdbc6.jar) 连接的 Oracle 11g 组成的情况下,这究竟意味着什么?

iBatis 是否会以某种方式更改发送给 Oracle 以处理分页的查询语句?我可以确定只有所需数据页的记录从数据库传输到应用程序吗?它在幕后如何运作?

4

1 回答 1

2

@ibatis 首先判断数据库是否支持该rs.absolute(seekPosion)方法,它将取出所有记录并从记录中过滤。

对于大数据检索,不建议您这样做,而应使用数据库中的分页。

MySQL:

limit offset,maxSize

甲骨文:

select B.* from (select b.*,rownum as linenum from A b where rownum>offset) B where B.linenum<mazSize;
于 2013-07-26T07:23:57.417 回答