想象一下我有这样的东西:
def example = {
def temp = ConferenceUser.findAllByUser(User.get(session.user))
[temp: temp]
}
解释我的问题:
虽然动态查找器非常易于使用且学习速度很快,但我必须将我网站的动态查找器替换为 sql 查询,因为这是一个要求。由于我不太了解 SQL,我的主要问题是:
a) 我正在使用 SQLS 数据库,驱动程序和数据源配置良好,我的网站现在可以正常运行。如果我想替换 sql 语句的“findAllByUser”,我应该这样做:
def dataSource
...
def db = new Sql(dataSource)
def temp = db.rows("SELECT ... ")
b) 那会起作用吗?我的意思是,如果我使用“findAllByUser”,临时对象将是一个列表,我是否需要打开到数据库的连接=?
通过 Grails,您可以使用动态查找器, 标准制定者, Hibernate 查询语言 (HQL), or 常规 SQL.
To use 常规 SQL:
import groovy.sql.Sql
- 请求对数据源的引用
def dataSource
or def sessionFactory
用于交易
- 创建一个
Sql
对象使用def sql = new Sql(dataSource)
or def sql = new Sql(sessionFactory.currentSession.connection())
- Use 常规 SQL按要求
Grails 将自动管理与数据源的连接。
Sql.rows返回一个可以传递给您的列表view.
例如:
import groovy.sql.Sql
class MyController {
def dataSource
def example = {
def sql = new Sql(dataSource)
[ temp: sql.rows("SELECT . . .") ]
}
}
在一笔交易中:
import groovy.sql.Sql
class MyController {
def sessionFactory
def example = {
def sql = new Sql(sessionFactory.currentSession.connection())
[ temp: sql.rows("SELECT . . .") ]
}
}
我推荐这本书Grails 与 GORM 和 GSQL 的持久性获得很多很棒的技巧和技巧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)