在 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);
注意必须在设置变量后添加映射器
我正在使用 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);
注意必须在设置变量后添加映射器