使用Grails的DDL查询

使用Grails的DDL查询,grails,Grails,我正在尝试在Oracle DB上创建一个DBA工具,以使用Grails管理多个数据库服务器。我的应用程序需要通过获取用户(DBA)输入来创建数据库用户。创建新的数据库用户是一个DDL语句。我们可以在Grails中编写DDL语句吗?当然,依赖项将数据源bean注入控制器/服务等,并从那里获得连接。然后,您可以执行任何想要的JDBC查询。您最好使用groovy.sql.sql,因为它简化了执行JDBC的工作流程 您还可以从Grails控制台运行查询(运行Grails控制台来启动它)。bean可以使用

我正在尝试在Oracle DB上创建一个DBA工具,以使用Grails管理多个数据库服务器。我的应用程序需要通过获取用户(DBA)输入来创建数据库用户。创建新的数据库用户是一个DDL语句。我们可以在Grails中编写DDL语句吗?

当然,依赖项将
数据源
bean注入控制器/服务等,并从那里获得连接。然后,您可以执行任何想要的JDBC查询。您最好使用
groovy.sql.sql
,因为它简化了执行JDBC的工作流程

您还可以从Grails控制台运行查询(运行
Grails控制台
来启动它)。bean可以使用隐式
ctx
变量中的属性访问表示法获得,该变量是Spring应用程序上下文,因此您可以通过
def dataSource=ctx.dataSource

以下是服务中的一个示例:

import groovy.sql.Sql

class MyService {

   def dataSource

   def someMethod() {

      def sql = new Sql(dataSource)

      String dml = '''\
         create table foo (
         ...
         )'''

      sql.execute(dml)
   }
}

当然,依赖项将
dataSource
bean注入控制器/服务等,并从那里获得连接。然后,您可以执行任何想要的JDBC查询。您最好使用
groovy.sql.sql
,因为它简化了执行JDBC的工作流程

您还可以从Grails控制台运行查询(运行
Grails控制台
来启动它)。bean可以使用隐式
ctx
变量中的属性访问表示法获得,该变量是Spring应用程序上下文,因此您可以通过
def dataSource=ctx.dataSource

以下是服务中的一个示例:

import groovy.sql.Sql

class MyService {

   def dataSource

   def someMethod() {

      def sql = new Sql(dataSource)

      String dml = '''\
         create table foo (
         ...
         )'''

      sql.execute(dml)
   }
}

这里的
dataSource
是否自动与config中定义的
数据源绑定?
是的,是bean管理dataSource.groovy中配置的连接池,如果您使用多个数据源,例如第二个名为“dataSource\u reporting”的数据源,然后会有一个同名的bean,您可以通过
def datasource\u reporting
在该数据源中使用它进行查询
datasource
这里的
datasource是否自动绑定到config中定义的
datasource?
是的,是该bean管理datasource.groovy中配置的连接池,如果您使用多个数据源,例如第二个名为“dataSource_reporting”的数据源,那么也会有一个同名的bean,您可以通过
def dataSource_reporting