dポイントプレゼントキャンペーン実施中!

現在jspでServletのO/R マッパーを使用しSQL文の結果をMapListでセットしそれをjspへリクエストを
送りjspで全件表として表示させようとしています。

件数によってテーブルの行数も増え また行数がある一定の行数まで増えたら~ っといった処理を作成するにはどのようにテーブルを作成したらいいのでしょうか?

A 回答 (3件)

補足読みました。

persist.readMapListで実行しているSQLにlimitとoffsetをつければいいだけでは。"~ limit 10 offset 10"みたいにすれば、11~20個目のデータだけが取り出せるはずです。そうやって必要な部分だけを抜き出して表示すればいいでしょう。

ところで、同じような質問を他でも見ましたが、標準のシステムライブラリ以外のものを使う場合は、何を利用しているのか明記しないと回答のしようがありません。Persistってなんでしょう? Persistantフレームワークか何かでしょうか。パッケージの記述もないのでは何をどう調べればいいのかもわかりません。もう少し具体的な情報を書くようにして下さい。
    • good
    • 0

これって要するにページネーションしたいってことなのでしょうか。

テーブルの表示で一定数で処理したい、というとそれしか思いつかなかったんですが……。

取得する件数が増えるとテーブルが増えるから……ということですが、普通は必要に応じて取得するレコード数を調整して表示すると思うのですが。必要以上のレコードを要求して、受け取って、テーブルに表示する際に数を調整するのは何か間違ってるように思います。

ORMを使っているということですが、どのORMでしょうか。素のJPAですか、あるいはHibernateとかSpring Dataなどでしょうか。エンティティを取得する際に、必要な位置から必要な数だけを取得する(JPAならcreateQuery時にsetMaxResultsするとか)ように、取得時に調整するように考えてはいかがですか。あるいは、ORMによってはページネーションは最初からもっていると思うのですが、そのあたりはどうなっているでしょう。

この回答への補足

Servlet
try{
conn = DBManager.getConnection();
Persist persist = new Persist(conn);
List<Map<String, Object>> strages = persist.readMapList("select * from t_storage_order,m_item,m_customer where t_storage_order.item_id = m_item.item_id AND t_storage_order.customer_id = m_customer.customer_id order by storage_order_id");
request.setAttribute("strages",strages);
} finally {
DBManager.close(conn);
}

このような形で記述しております。

補足日時:2014/07/13 12:23
    • good
    • 0

スクリプトレットでfor文回して出力するといいかと思います。



<table>
<% for (Map<?, ?> mp : listMap) { %>
<tr><td><% mp.get("XXX") %></td></tr>
<% } %>
</table>

こんな感じでしょうか?
うろ覚えで書いたので構文間違えてるかもしれませんが、
感じだけ伝えられればという事でお願いします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!