如果我们在示例中调用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以处理分页的查询语句?我能确定只有所需数据页的记录从数据库传输到应用程序吗?它是如何在幕后工作的?
答案 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;