【问题标题】:MyBatis Spring DYNAMIC number of multiple databases Java configurationMyBatis Spring DYNAMIC 多个数据库 Java 配置数
【发布时间】:2017-01-23 18:51:58
【问题描述】:

这对于简单的 Spring DAO 方法来说是相当直接的。但是,使用 MyBatis,有没有办法设置多个潜在的数据源?

我能想到的最好方法是使用一个 Bean 的 ArraList,每个包含 datasource.driverclass、datasource.url、datasource.username、datasource.password 等。

数据源的值存储在单独的属性文件中。这些属性文件可能有 1 个或 10 个(或更多)。

因此,例如,一个应用程序启动时,所有属性文件将一次加载到一个 ArrayList 中。然后,根据属性文件中的 NAME=value 行,我们将知道要命中哪个数据源。

所以 http:localhost:8080/name=db1

... 将访问配置为名称“09”的数据源中的所有数据。每个属性文件将包含:

name=db1
datasource.driverclass=jdbc:sqlserver
datasource.url=jdbc:sqlserver://localhost:1433;databaseName=someDBname
datasource.username=user1
datasource.password=pass1

所以这里的标识符是“name=db1”。

MyBatis 实现的最佳方法是使用 Bean 的 ArrayList 吗?

【问题讨论】:

  • 您是否希望提供多租户?如果是这样,可能有比尝试自己推出更好的解决方案。
  • 请编辑您的问题,告诉我们更多关于上下文的信息,您想要达到什么目的?为什么要使用多个数据源?都采用相同的方案?相同的数据?
  • @Kayaman - 这正是计划,多租户解决方案。您认为在这种情况下会有什么更好的建议?
  • @blackwizard - 我会在上面添加一些细节。基本上是一个多租户解决方案,不同的数据/数据库和相同的架构。
  • 我想你会通过谷歌搜索“mybatis multitenancy”找到一些东西。

标签: java spring mybatis spring-mybatis


【解决方案1】:

如果您想跟上多个数据库,这里有一些线索:

无论如何,我会说数据源应在服务器配置中而不是在应用程序中进行管理。

然后 Mybatis 主配置文件必须放在添加到类路径的位置,但在应用程序包之外,因为每个新的数据源都必须在 environment 元素内引用。

对于每个用户请求或会话(如果是 Web 应用程序),将解析配置,因为必须调用 SqlSessionFactoryBuilder.build(reader, environment=NAME); 来选择环境(=> 数据库)。

【讨论】:

    【解决方案2】:

    我最终使用了一个分层的 application.yml 文件,详细说明了基于所选租户代码的多租户连接值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多