[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 メーリングリストの案内