2013-01-17 7 views
5

私は、プロジェクトでテンプレートエンジンとして使用できるさまざまなライブラリを見ています。現在、Apache Velocityは良い候補のようです。ベロシティテンプレート内でデータベースクエリを定義する

テンプレートにSQLデータベースクエリを指定し、querysの戻り値を使用してパラメータを埋め込むことはできますか?

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. 

これについて少し気をつけていただければ幸いです。例を提供するのに十分親切な人、または私がこれに関する追加の文書を見つけることができる場所を指摘する人は誰ですか?

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

例:これは、次の

答えて

3

私を見てみたいことがありによって作成されたすべての文書クエリを直接埋め込むのではなく、http://velosurf.sourceforge.net/のようなものをお勧めします。

0

特定のクエリの最初の5の結果を表示する方法を示す

一般例(あなたは一例としてこれを使用して他の人と試すことができます)HQLのためであります以下に、あなたが書くことができるさまざまなHQLクエリを示します。 単純なクエリ

表示して、ユーザーXWiki.JohnDoe

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

のadditonal情報

あなたはこのlink

+0

あなたの答えをありがとう。私はここでSQLクエリを実行することができますか?可能であれば、データベース資格情報とコネクタ情報はどこで設定する必要がありますか?私は、DataSourceResourceLoaderを使用してデータベースからテンプレートを取得できることを知っています。しかし、SQLクエリを実行してテンプレート内の値を取得することは可能ですか?前もって感謝します。 –

+0

これはXWikiに関連しています。スタンドアロンのVelocityはデフォルトで '$ xwiki'オブジェクトを持っていません。 –

2

Velocityは非常に軽量ですテンプレートエンジン、それ自体がほとんど機能していません。テンプレートファイルにコンテキスト内で(あなたによって)定義されたinterpolating変数で動作します。既定では、コンテキストはが空のです。つまり、テンプレートに使用する変数はありません。速度は、それはあなたが使用することができ、すべての文字列と数値リテラル、プラス地図やリストである、カスタムクラスの新しいオブジェクトをインスタンス化することはできません:

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

あなたはコンテキストを取り込むことにより、「スマート」ベロシティを作るための責任があります補間する前に有用なオブジェクトで。出発点として、Velocity Toolsの一部を使用することができます。クエリを実行できるSQLツールのような独自のツールを追加できます。または、higher level framework that uses velocityを使用することができ、既にテンプレートで利用可能な豊富なツール群を提供しています。

質問に答えるには、文を実行できるオブジェクトをコンテキストに追加する限り、任意のSQL文を実行できます。 developer guideでVelocityを正しく使用する方法の詳細を読む必要があります。

関連する問題