Configurationconfiguration=parse();
//使用Configuration对象创建SqlSessionFactory
SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(configuration);
//使用MyBatis
SqlSessionsqlSession=sqlSessionFactory.openSession();
Listlist=sqlSession.selectList("com.foo.bean.BlogMapper.queryAllBlogInfo");
四、涉及到的设计模式
初始化的过程涉及到创建各种对象,所以会使用一些创建型的设计模式。在初始化的过程中,Builder模式运用的比较多。
对于创建SqlSessionFactory时,会根据情况提供不同的参数,其参数组合可以有以下几种:

由于构造时参数不定,可以为其创建一个构造器Builder,将SqlSessionFactory的构建过程和表示分开:

MyBatis将SqlSessionFactoryBuilder和SqlSessionFactory相互独立。mybatis原理
Builder模式应用2: 连接环境Environment对象的创建
在构建Configuration对象的过程中,XMLConfigParser解析 mybatis XML配置文件节点<environment>节点时,会有以下相应的代码:
privatevoidenvironmentsElement(XNodecontext)throwsException{
if(context!=null){
if(environment==null){
environment=context.getStringAttribute("default");
}
for(XNodechild:context.getChildren()){
Stringid=child.getStringAttribute("id");
//是和默认的环境相同时,解析之
if(isSpecifiedEnvironment(id)){
TransactionFactorytxFactory=transactionManagerElement(child.evalNode("transactionManager"));
DataSourceFactorydsFactory=dataSourceElement(child.evalNode("dataSource"));
DataSourcedataSource=dsFactory.getDataSource();
//使用了Environment内置的构造器Builder,传递id事务工厂和数据源
Environment.BuilderenvironmentBuilder=newEnvironment.Builder(id)
.transactionFactory(txFactory)
.dataSource(dataSource);
configuration.setEnvironment(environmentBuilder.build());
}
}
}
}
在Environment内部,定义了静态内部Builder类:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-40254-6.html
美国也到倒退80年
无论硬件有多先进了都不要骄傲