我在 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>
如图所示,它将从
<environment id="development">
加载数据源问题:是否可以在运行时切换使用
<environment id="test">
不修改XML?例如 - 我有一个我正在使用的测试文件 SqlSessionFactory
并希望以编程方式将其设置为使用测试环境?
最佳答案
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
关于environment - iBatis - 使用 XML 选择环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649193/