0

我正在使用 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 上下文中的属性文件中使用系统或环境变量。

4

1 回答 1

1

MyBatis 不会像那样扩展环境变量。
您可能必须Configuration在 Java 代码中构建。
有关基础知识,请参阅此文档

然后调用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);

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

于 2020-04-12T07:42:29.340 回答