database - Grails:我可以切换案例数据库 url

标签 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
        }
}

我不想使用 Multi-Tenancy 核心插件

最佳答案

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'])
    }
    // ...
}

最后,根据请求使用数据源:

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

您还可以将数据源自动连接到您的服务或 Controller 中并直接使用它们。

关于database - Grails:我可以切换案例数据库 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11167526/

相关文章:

mysql - mysql中随机丢失数据库记录

mysql - 如果 and 子句中没有数据,则选择错误

google-chrome - Grails/Chrome 错误 : resource interpreted as Font but transferred with MIME type application/octet-stream

grails - 安装 grails profiler 插件后没有线程绑定(bind)异常

java - 如何在ireport中打印 map 的值(value)?

java - 数据库不同数据源的异步多查询

JavaScript JSON 表匹配

php - PDO 连接和准备好的语句

grails - 无法从Grails项目建立 war

c# - 如何在具有不同数据源的 GridView 上设置列?