一尘不染

Grails SQL查询

sql

想象一下,我有这样的事情:

def example = {
   def temp = ConferenceUser.findAllByUser(User.get(session.user))
   [temp: temp]
}

解释我的问题:尽管动态查找器非常易于使用和学习,但是我必须替换网站的动态查找器以进行sql查询,因为这是必需的。由于我不太了解SQL,所以我的主要问题是:

a)我使用的是SQLS数据库,其驱动程序和数据源配置正确,我的网站现在可以正常工作。如果我想将“
findAllByUser”替换为sql语句,我应该做这样的事情:

def dataSource
...
def db = new Sql(dataSource)
def temp = db.rows("SELECT ... ")

b)那行得通吗?我的意思是,如果使用“ findAllByUser”,则临时对象将是一个列表,是否需要打开与数据库的连接=?


阅读 221

收藏
2021-03-17

共1个答案

一尘不染

是的,使用grails,您既可以执行普通sql查询,也可以进行hql查询。HQL是“休眠查询语言”,允许您编写类似sql的语句,但使用域类和属性而不是表名和列名。要进行hql查询,请执行以下操作

def UserList = ConferenceUser.executeQuery('from ConferenceUser cu where cu.user = ?', [user]),

您在这里拥有的是一个参数化查询-executeQuery看到了吗?在hql字符串中,并为您替换方法中第二个参数([user]在本例中)的数组中的参数。

参见
http://grails.org/doc/latest/ref/Domain%20Classes/executeQuery.html

2021-03-17