Использование переменных среды в файле свойств Mybatis

Я использую 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.

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);

Обратите внимание, что сопоставители должны быть добавлены после установки переменных.

Другие вопросы по тегам