我们可以通过两种方式做到这一点:
- 使用格姆(如果他们有一些相同的列)
- 使用查询
方法1:
创建两个DataSource.groovy中的数据源。 对于已创建的数据库,在定义数据源时不要提供dbcreate选项。这将防止何时创建客户对象,它只会在Test1数据库中创建记录。 这两个数据库都有客户表。所以我们可以使用GORM访问数据。为此,必须在域中定义数据源“ALL”。
Test1的客户表包含姓名和年龄栏 Test2的客户表包含姓名,电子邮件和电话。
通过GORM,我们只能访问域属性。所以我只能从Test2的客户表访问名字。
在DataSource.groovy中,
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "admin"
password = "admin"
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
// cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:mysql://localhost:3306/test1"
}
dataSource_test2 {
driverClassName = 'com.mysql.jdbc.Driver'
username = "admin"
password = "admin"
url = "jdbc:mysql://localhost:3306/test2"
}
}
test {
dataSource {
dbCreate = "update"
url =
"jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
}
}
..........
.......
在Customer.groovy,
class Customer {
static constraints = {
}
String name
int age
static mapping = {
datasource 'ALL'
}
}
在控制器,
class CustomerController {
def dataSource_test2
def testingDB(){
Customer.test2.list().each{
println it.name
}
println Customer.list()
render "hi"
}
}
方式2:
class MainController {
def dataSource_test2
def index() {
String nameSql = "select * from customer"
Sql sql = new Sql(dataSource_test2)
def rows = sql.rows(nameSql)
println rows
}
}