2011-08-02 8 views
0

は、それはグラムでSQLクエリを反復することは可能です:はどのように我々はGSPページで<g:each>でSQLクエリを使用するのです

<g:each in="${Books.list()}"> 

これに代えて、それぞれがどのようにのようなSQLクエリを使用する

select author,publisher from books,publisher where book_name="" and book_title=""... 
+1

ビューにsqlコードを入れないでください。 MVCの後ろに力を入れてください。また、あなたのSQLの例は、いくつかの問題を引き起こすようです。 –

答えて

9

良いデザインのために、それは不可能と言うことができます。

MVCパターンの原則を守り、このコードをコントローラまたはドメインクラスに保持する必要があります。お使いのコントローラがこのようになります

...

def list = { 
    def results = Book.executeQuery(sql); 
    [results:results] 
} 

あなたのビュー(GSP)は、それがGSPにこれにrecommandedされていない

<ul> 
    <g:each in="${results}" var="result"> 
     <li>${result}</li> 
    </g:each> 
</ul> 
0

....次のようになります。代わりに、あなたのコントローラ内でデータ処理を実行し、結果をgspに渡す必要があります。利点:

  1. 再利用
  2. ためserivcesでログインをカプセル化
  3. を維持しやすいサービスに簡単にアクセスし、他のヘルパークラス
  4. 概要
  5. より良い...

場合あなたはあなたのgspでこれにしたいと思う、例えば:

Author.executeQuery("select a from Author as a")