这种方式实现了MyBatis可以连接多数据源
*/
privatevoidenvironmentsElement(XNodecontext)throwsException
{
if(context!=null)
{
if(environment==null)
{
environment=context.getStringAttribute("default");
}
for(XNodechild:context.getChildren())
{
Stringid=child.getStringAttribute("id");
if(isSpecifiedEnvironment(id))
{
//1.创建事务工厂TransactionFactory
TransactionFactorytxFactory=transactionManagerElement(child.evalNode("transactionManager"));
DataSourceFactorydsFactory=dataSourceElement(child.evalNode("dataSource"));
//2.创建数据源DataSource
DataSourcedataSource=dsFactory.getDataSource();
//3.构造Environment对象
Environment.BuilderenvironmentBuilder=newEnvironment.Builder(id)
.transactionFactory(txFactory)
.dataSource(dataSource);
//4.将创建的Envronment对象设置到configuration对象中
configuration.setEnvironment(environmentBuilder.build());
}
}
}
}
privatebooleanisSpecifiedEnvironment(Stringid)
{
if(environment==null)
{
thrownewBuilderException("Noenvironmentspecified.");
}
elseif(id==null)
{
thrownewBuilderException("Environmentrequiresanidattribute.");
}
elseif(environment.equals(id))
{
returntrue;
}
returnfalse;
}
4. 返回Configuration对象
我们将上述的MyBatis初始化基本过程的序列图细化,

三、手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象
我们可以使用XMLConfigBuilder手动解析XML配置文件来创建Configuration对象,代码如下:
Stringresource="mybatis-config.xml";
InputStreaminputStream=Resources.getResourceAsStream(resource);
//手动创建XMLConfigBuilder,并解析创建Configuration对象
XMLConfigBuilderparser=newXMLConfigBuilder(inputStream,null,null);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-40254-5.html
不惜一切代价