前回データベースのテーブル内容をVelocityコンポーネントを使用してブラウザ上で表示する流れを説明しました。
今回はVelocityコンポーネントに提供されているメソッドの中から、レコード取得のため頻繁に利用するメソッド一部をご紹介します。
フローは前回紹介したもので、データベースからデータを取得し、取得したデータをMapperコンポーネントでデータをマッピングし、Velocityコンポーネントを使用してブラウザ上で表示させるという内容になります。
※データベーステーブルには上記写真のように4つのレコードがあることを想定
①テーブル内のすべてのレコードをforeachで取得する方法
1.#foreach ($data in $in.records)
2. <tr>
3. <td>$data.get("ORDERID")</td>
4. <td>$data.get("DATE") </td>
5.<td>$data.get("CUSTOMERID")</td>
6.<td>$data.get("QUANTITY") </td>
7.</tr>
8.#end
$dataは任意の名前でOK
メソッドの説明
Velocityコンポーネントは入力される全てのストリームを$inに格納される
すべてのレコードを取得するため、recordsメソッドを使用する($in.records)
recordsの中身を一つずつ確認したい場合は、foreachを使用して中身を確認する
recordsをforeachでループさせているので、$dataにはデータベーステーブルの各レコードが順番に格納される
get(String 変数名)を使用し、変数名に対応する値を出力する
1~8までのコードを実行すると下記画像内容のデータが取得される
②レコードを1行ずつ取得する方法
1.<div>1行目:$in.record(0) </div>
2.<div>2行目:$in.record(1) </div>
3.<div>3行目:$in.record(2) </div>
メソッドの説明
入力される全てのストリームが$inに格納されている
レコードを一行ずつ取得するためには、record()メソッドを使用 ※引数には数値(インディクス番号)を指定
インディクス番号に対応するレコードが返してくれる
1~3までのコードを実行すると下記画像内容のデータが取得される
③レコードの件数を取得する方法
1.<div>レコード数:$in.records.size() </div></br>
メソッドの説明
$inに格納されたストリームからrecordsメソッドですべてのレコードを取得
取得したレコードの件数はsize()メソッドで確認できる
④各レコード内のフィールドを取得する方法
1.<div>レコード0,フィールド0: $in.record(0).field(0)</div>
2.<div> レコード0,フィールド1:$in.record(0).field(1)</div>
3.<div> レコード0,フィールド2:$in.record(0).field(2)</div
※record(1),record(2)も同様で各フィールドを取得したい場合は、取得したいインディクス番号を指定
メソッドの説明
各レコード内のフィールドを取得したい場合は、field()メソッドを使用する ※引数には数値(インディクスを指定)
インディクス番号に対応する値を返す
上記の写真で③と④で取得データの内容が確認できる