Grails:我可以切换案例数据库网址吗?

时间:2012-06-23 06:49:31

标签: database grails datasource

我怎么能在Grails 2.0.4中这样做?

dataSource {

        dbCreate = "create-drop"
        String host = request.getServerName()
        switch( host ) {
            case "company1.com": url = "jdbc:mysql://localhost/db1"
            case "company2.com": url = "jdbc:mysql://localhost/db2"
            default: null
        }
}

我不想使用多租户核心插件

1 个答案:

答案 0 :(得分:4)

Grails 2支持multiple datasources,因此您应配置两个单独的数据源,并让您的服务/域层在两者之间切换:

dataSource_company1 {
    dbCreate = "create-drop"
    url = "jdbc:mysql://localhost/db1"
}
dataSource_company2 {
    dbCreate = "create-drop"
    url = "jdbc:mysql://localhost/db2"
}

然后配置您的域对象以支持:

class Foo {
    static mapping = {
        datasources(['company1', 'company2'])
    }
    // ...
}

最后,根据请求使用datasource:

def company = request.serverName.split('.')[0]
def fooThings = Foo."$company".findAll()

您还可以将数据源自动装配到服务或控制器中,并直接使用它们。