簡單敘述一下,即把xml裡面的配置資訊進行解析,並儲存到configuration的容器中。
1.sqlsessionfactory是mybatis的核心類,可以提供sqlsession,以sqlsession的形式執行sql。
2.configuration用於儲存xml的配置資訊如sql等。
其實sqlsession只是乙個門面,實際是由executor來執行sql的
在的**如下:
@override
publicobject invoke(object proxy, method method, object args)throwsthrowablecatch(throwable t)
}final
return
}這裡的sqlsession其實是乙個sqlsessiontemple物件,在execute方法裡面會呼叫sqlsessiontemple的方法(因為此時的sqlsession就是sqlsessiontemple),以update為例
publicobject execute(sqlsession sqlsession, object args)elseif(sqlcommandtype.update == command.gettype())elseif(sqlcommandtype.delete == command.gettype())elseif(sqlcommandtype.select == command.gettype())elseif(method.returnsmany())elseif(method.returnsmap())elseif(method.returnscursor())else
}elseif(sqlcommandtype.flush == command.gettype())else
if(result ==null&& method.getreturntype().isprimitive() && !method.returnsvoid())
returnresult;
}而進入sqlsessiontemple的方法其實都是走sqlsessioninterceptor**
privateclasssqlsessioninterceptorimplementsinvocationhandler
returnresult;
}catch(throwable t)
}throw
}finally}}
}在sqlsessioninterceptor**中利用defaultsqlsessionfactory重新建立了新的sqlsession(對應建立新的executor),以替換sqlsessiontemple執行,以下是defaultsqlsessionfactory建立sqlsession的方法
privatesqlsessionopensessionfromdatasource(executortype exectype, transactionisolationlevel level,booleanautocommit)catch(exception e)finally
}參考部落格
mybatis工作流程
mybatis 的工作流程 1.讀取配置檔案 連資料庫的相關資訊 2.有了這些資訊就能建立sqlsessionfactory sqlsessionfactory的生命週期是程式級,程式執行的時候建立起來,程式結束的時候消亡 3.sqlsessionfactory建立sqlsession,目的執行sq...
MyBatis 的工作流程
mybatis功能架構 1.讀取配置檔案 連資料庫的相關資訊 2.有了這些資訊就能建立sqlsessionfactory sqlsessionfactory的生命週期是程式級,程式執行的時候建立起來,程式結束的時候消亡 3.sqlsessionfactory建立sqlsession,目的執行sql語...
mybatis的工作流程,快取機制
一級快取 mybatis的一級快取是sqlsession級別的快取,在運算元據庫時需要構造sqlsession物件,在物件中有乙個hashmap用於儲存快取資料,不同的sqlsession之間快取資料區域 hashmap 是互相不影響的。一級快取的作用域是sqlsession範圍的,當在同乙個sql...