本文介绍了在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属性文件中使用环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!