Bos*_*one 3 environment ibatis xml-configuration
我有这个配置 ibatis-config.xml
<configuration>
<properties resource="collector.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${dev.jdbc.driver}" />
<property name="url" value="${dev.jdbc.url}" />
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${test.jdbc.driver}" />
<property name="url" value="${test.jdbc.url}" />
</dataSource>
</environment>
</environments>
<mappers>
</mappers>
</configuration>
Run Code Online (Sandbox Code Playgroud)
如图所示,它将从中加载数据源 <environment id="development">
问题:是否可以在<environment id="test">不修改XML的情况下在运行时切换使用?例如 - 我有一个我正在使用的测试文件,SqlSessionFactory并希望以编程方式设置它以使用测试环境?
小智 7
SqlSessionFactoryBuilder.build()方法可以选择XML中的特定环境.
例如,
private Reader reader;
private SqlSessionFactory sqlSessionFactorys;
private SqlSession session;
reader = Resources.getResourceAsReader("ibatis-config.xml");
sqlSessionFactorys = new SqlSessionFactoryBuilder().build(reader, "test");
testSession = sqlSessionFactorys.openSession(); // test env
sqlSessionFactorys = new SqlSessionFactoryBuilder().build(reader, "development");
devSession = sqlSessionFactorys.openSession(); // dev env
Run Code Online (Sandbox Code Playgroud)