Mybatis工作流程

2021-09-13 13:30:22 字數 2753 閱讀 8969

簡單敘述一下,即把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...