表示記事数を制限する

<< 戻る   トップ >>

リハビリ中。記事の数を制限するだけでこのありさま。

データベースの記事表 article へのアクセスについて考えている。とりあえずすべての記事のリストを取り出す方法はわかったので、今度は記事数を制限して、「前へ」と「次へ」ボタンでリストを行き来できる、典型的なリスト選択システムを作りたい。そのものズバリのサンプルが "Beginning Java EE6" にあったような気がしたのだが、みつからないので考えてみよう。

まず、SQL (正確にはSQL をJPA用の SQL である JPQL) を使ってみる。名前付クエリアノテーションを使って定義した

@NamedQuery(name = "Article.findByIds", query = "SELECT a FROM Article a WHERE a.id BETWEEN :min AND :max" )

典型手な SQL だと思う。min と max に組み込まれる変数を管理してやることによって、うまく動くはずだ。よく見ると、javax.persistence.Query インターフェースには setMaxResults() とか setFirstResult() というメソッドがある。これを使ったほうが簡単化もしれない。ここで遥かで朧げな SQL SELECT 文の記憶が。さきの SELECT 文は、id フィールドの値を参照しているけれど、もっと単純に検索結果リストのどこからどこまでと指定する句があったような気がしてきた。久々に SQL リファレンスを読んでみる。なるほど LIMIT 句であるのだな。推察するにsetMaxResults() とか setFirstResult()はLIMIT 句を自動付加するのではないだろうか。

そして最初に作った SQL 文についてよくよく考えてみると、なんというか初心者の犯しがちな誤りをしっかりと誤っているというか、えらいことになっている。id が連続していて抜けていない、ということが前提になっているのだ。うーむ、鈍ったな。

とりあえず 0 番目から10件の記事を表示する Facelet ができあがった。次回はボタンをとりつけて前後させる処理からとりかかる。あと、データ中の不等号が自動的にエスケープされてしまっている。自動エスケープの解除も次の課題と言えよう。


作成: 2013-07-05 11:39:43.0更新: 2013-07-05 11:39:43.0
http://museo-anonimo.jp/nanban/?id=1217,http://museo-anonimo.jp/nanban/tr/1217