Как мы используем запросы SQL вна странице gsp - PullRequest
0 голосов
/ 02 августа 2011

Можно ли выполнить итерацию SQL-запроса с помощью g: each

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

вместо этого, как использовать SQL-запрос, например

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

Ответы [ 2 ]

9 голосов
/ 02 августа 2011

Ради хорошего дизайна, допустим, это невозможно.

Вы должны придерживаться принципов шаблона MVC и хранить этот код в своем контроллере или классе домена.

Ваш контроллер может выглядеть следующим образом ...

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

Ваш вид (gsp) может выглядеть следующим образом ....

<ul>
    <g:each in="${results}" var="result">
      <li>${result}</li>
    </g:each>
</ul>
0 голосов
/ 02 августа 2011

это не рекомендуется в gsp. вместо этого вы должны выполнить обработку данных в вашем контроллере, а затем передать результат в ваш gsp. Преимущества:

  1. лучший обзор
  2. упрощенный доступ к службам и другим вспомогательным классам
  3. проще в обслуживании
  4. инкапсулирует ваш логин с сервисами для повторного использования
  5. ...

если вы хотите сделать это в своем gsp, вы можете использовать hql-запрос, например:

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