本文介绍了在Mybatis属性文件中使用环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用mybatis连接到数据库,并在外部属性文件中存储了一些架构信息。我已将此属性文件保存在我的磁盘上的某个位置,并在下面的config.xml中引用它

在Config.xml中

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

在我的sqlmapconfig.properties文件中

schema=test_schema

我确实希望使此路径可由用户配置,这意味着用户可以设置类似于"MyBati.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);

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

这篇关于在Mybatis属性文件中使用环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 06:38