2

Apache iBatis SqlMaps を使用したページネーションに関するこの素晴らしい記事では、次の例のように queryForList API を呼び出すと、利用可能な場合は ResultSet.absolute(position) を使用して、iBatis がデータベース カーソルを使用して物理的なページネーションを行うと述べています。

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

DataSource が jdbc (ojdbc6.jar) 経由で接続された Oracle 11g で構成されている場合、それは正確にはどういう意味ですか?

iBatis は、ページングを処理するために Oracle に送信されるクエリ ステートメントを変更しますか? 必要なデータ ページのレコードのみがデータベースからアプリケーションに転送されることを確認できますか? 舞台裏でどのように機能しますか?

4

1 に答える 1

2

@ibati最初にデータベースが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 に答える