5

プロジェクトでテンプレート エンジンとして使用できるさまざまなライブラリを検討していますが、現時点では Apache Velocity が適切な候補のようです。私はその使用法に関して次の疑問を持っています:

テンプレートで SQL データベース クエリを指定し、クエリの戻り値を使用してパラメーターを入力することはできますか? Velocity ユーザー ガイドで次の例を見つけました。

Hello,

#set( $result = $query.criteria("name") )
Your username is $result.

ただし、このガイドでは、SQL クエリの実行についてはあまり説明されていません。値を返す SQL SELECT クエリを定義し、この値をテンプレートの変数に割り当てることはできますか? 以下の例のようなことが可能かどうか疑問に思っていますか?

Hello,

#set( $result = $executeQuery("SELECT name FROM user") )
Your username is $result.

これについて少しでも光を当てていただければ幸いです。例を提供してくれる親切な人、またはこれに関する追加のドキュメントを見つけることができる場所を教えてくれる人はいますか?

4

3 に答える 3

3

クエリを直接埋め込むのではなく、 http: //velosurf.sourceforge.net/のようなものをお勧めします。

于 2013-01-18T16:50:11.460 に答える
2

Velocity は非常に軽量なテンプレートエンジンであり、それ自体にはほとんど機能がありません。コンテキストで (ユーザーが) 定義した変数をテンプレート ファイルに補間することで機能します。デフォルトでは、コンテキストはです。つまり、テンプレートで使用する変数はありません。Velocity では、カスタム クラスの新しいオブジェクトをインスタンス化することはできません。使用できるのは、文字列と数値リテラル、およびマップとリストだけです。

#set ($n = 5)
#set ($s = 'Hello New World!')
#set ($m = {'four' : 4, 'five' : $n})
#set ($a = ['x', 'y', 'z'])

補間する前にコンテキストに有用なオブジェクトを設定することで、Velocity を「スマート」にする必要があります。開始点として、いくつかのVelocity Toolsを使用できます。クエリを実行できる SQL ツールなど、独自のツールを追加できます。または、速度を使用し、テンプレートで使用できる豊富なツール セットを既に提供している、より高いレベルのフレームワークを使用することもできます。

したがって、あなたの質問に答えるために、そのようなステートメントを実行できるオブジェクトをコンテキストに追加する限り、必要な SQL ステートメントを実行できます。Velocity を適切に使用する方法については、デベロッパー ガイドを参照してください。

于 2013-01-18T18:04:54.987 に答える
0

以下は HQL の場合です (例としてこれを使用して他のユーザーと試すことができます)。

特定のクエリの最初の 5 つの結果を表示する方法を示す一般的な例:

#set($hql = "<query here>")
#set($results = $xwiki.searchDocuments($hql, 5, 0))
#foreach ($item in $results)
 * $item
#end

以下の例は、作成できるさまざまな HQL クエリを示しています。 単純なクエリ

ユーザー XWiki.JohnDoe によって作成されたすべてのドキュメントを表示します

#set($hql = "where doc.creator='XWiki.JohnDoe'")

追加情報

あなたはこのリンクを見たいかもしれません

于 2013-01-17T08:27:32.203 に答える