在 Mybatis 属性文件中使用环境变量

Using Environment variables in Mybatis properties file

我正在使用 mybatis 连接到数据库,并且我在外部属性文件中存储了一些架构信息。我把这个 属性 文件保存在我的磁盘上的某个地方,并在我的 config.xml 中引用它,如下所示

在Config.xml

<properties url="file:///E:/mybatis/sqlmapconfig.properties" />

在我的 sqlmapconfig.properties 文件中

schema=test_schema

我确实想让这个路径可由用户配置,这意味着用户可以将环境设置为 "MyBatis.Config",值为 "E:/mybatis"。这样您就可以在 config.xml 文件中引用它,如下所示

<properties url="file:///${env.MyBatis.Config}/sqlmapconfig.properties"/>

我试过上面的代码片段,但没有选择 属性 文件。任何人都知道我们如何在 Mybatis 上下文中的 属性 文件中使用系统或环境变量。

MyBatis 不会那样扩展环境变量。
您可能需要在 Java 代码中构建 Configuration
请参阅此 doc 了解基础知识。

然后调用configuration.setVariables()设置加载的Properties.

String envVar = System.getenv("MyBatis.Config");
String url = "file:///${env.MyBatis.Config}/sqlmapconfig.properties"
  .replace("${env.MyBatis.Config}", envVar);
Properties props = new Properties();
try (InputStream propStream = new URL(url).openStream()) {
  props.load(propStream);
}
configuration.setVariables(props);
configuration.addMapper(YourMapper.class);

注意必须在设置变量后添加映射器