使用Apache iBatis SqlMaps queryForList进行分页

时间:2013-02-19 19:18:54

标签: java-ee pagination oracle11g ibatis

如果我们在示例中调用queryForList API,则nice article about pagination with Apache iBatis SqlMaps表示如果使用ResultSet.absolute(position),iBatis使用数据库游标进行物理分页:

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

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

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

1 个答案:

答案 0 :(得分: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;