将两个数据库用于grails中的应用程序

MAl*_*lex 6 database grails

我正在使用grails创建一个应用程序,该应用程序应从一个数据库读取并写入另一个数据库.我为此要求创建了datasources.groovy并安装了datasources插件.但是,我在执行sql查询时遇到了如何使用这个数据源(select*from ........等等).

例如.以下是我在操作中运行查询的方法.我使用的是自定义查询而不是gorm.

编辑:

class TuneController {   

    def dataSource_ds2

    def list = {

        String nameSql = "select name from emp where id=3345"
        Sql sql = new Sql(dataSource_ds2)
        String name = sql.rows(nameSql)
        println(name)
    }
}
Run Code Online (Sandbox Code Playgroud)

在上述情况下,不读取数据源并且具有空值.是否有可用于此要求的示例代码.

我在这里错过了什么吗?

编辑:

我的Datasources.groovy条目如下.

datasources = { 

    datasource(name:'ds2') {
        domainClasses([com.Tune])
        readOnly(true)
        driverClassName('oracle.jdbc.driver.OracleDriver')
        url('jdbc:oracle:thin:@test-ofr.wellmanage.com:1521:OFRS1')         
        username('test')
        password('test')
        environments(['development'])
        dbCreate('do-not-bother')
        logSql(true)
        dialect(org.hibernate.dialect.Oracle10gDialect)
        hibernate {
            cache {
                use_second_level_cache(false)
                use_query_cache(false)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Bur*_*ith 5

辅助数据源可以使用依赖注入,但它们的名称基于Datasources.groovy中的名称.例如,如果您已经定义了名为'foo'的数据源,那么您可以使用以下内容注入def dataSource_foo:

class MyController {

   def dataSource_foo

   def list = {
      String nameSql = "select name from emp where id=3345"
      Sql sql = new Sql(dataSource_foo)
      def rows = sql.rows(nameSql)
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您必须将其def dataSource_foo作为类范围字段而不是您的操作(或方法).对于每个依赖注入都是如此 - 如果它在方法或闭包内,它只是一个方法范围变量.