我正在使用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)
辅助数据源可以使用依赖注入,但它们的名称基于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作为类范围字段而不是您的操作(或方法).对于每个依赖注入都是如此 - 如果它在方法或闭包内,它只是一个方法范围变量.
| 归档时间: |
|
| 查看次数: |
5950 次 |
| 最近记录: |