[seasar-s2dao-dev:664] Re: [DAO-145]について

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2009年 2月 28日 (土) 10:06:28 JST


中村(taedium)です。

> https://www.seasar.org/issues/browse/DAO-145
> 
> これが手付かずになっています。

これ、すっかり忘れていましたね。

> LIMITとOFFSETを使ったページングはLimitOffsetPagingSqlRewriterを
> 使用するのが推奨となっているため、これをベースに書き直せるなら
> 対応してもよいかと思ったのですが、SqlRewriterは全体の件数→結果を
> 取得するSQLの実行をという順番になっており、JIRAの提案は
> 結果を取得するSQLの実行→全体の件数を取得となるため、うまく
> 取り込めません。
> 
> 皆様はどう思われますか?

推奨のPagingSqlRewriterのほうに寄せるのに賛成です。

今は、PagingSqlRewriterのrewirte()でselect count(*) していますが
PagingSqlRewriterにcount()みたいなメソッドを
持たせて次のようにするのはどうでしょう。

1. PagingSqlRewriter.rewirte() // ページング用SQL作成
2. SelectHandler.execute()     // rewriteされたSQLの実行
3. PagingSqlRewriter.count()   // select count(*)相当実行

これまでとSQLが発行される順番が変わっちゃいますけど
問題ないかなと個人的には思います。
もし問題があるならば、既存のものはrewirteでselect count(*) 
するようにしておいてもいいかと思います。

MySQL用つくるならDB2用、SQL Server2005用、
PostgreSQL用とかつくってもいいかもしれないですね。
-- 
Toshihiro Nakamura



seasar-s2dao-dev メーリングリストの案内