一、什么是SqlSession呢?
SqlSession是Mybatis最重要的構建之一,可以簡單的任務Mybatis一系列的配置目的是生成類似JDBC生成的Connection對象的SqlSession,這樣才能和數據庫開啟“溝通的橋梁”,通過SqlSession可以實現增刪改查(當然現在更加推薦是使用Mapper接口的形式),那么它是如何執行實現的呢?
了解SqlSession的運作原理是學習Mybatis插件的必經之路,因為Mybatis的插件會在SqlSession運行過程中“插入”運行,如果沒有很好理解的話,Mybatis插件可能會覆蓋相應的源碼造成嚴重的問題。
1.sqlsession
(1)sqlsession簡單原理介紹
sqlSession提供select、insert、update、delete方法,在舊版本中使用sqlsession接口的這些方法,但是在新版本中Mybatis就會建議直接使用mapper接口的方法。
映射器其實就是一個動態代理對象,進入到MapperMethod的execute方法就能簡單找打sqlsession的刪除,更新、查詢、選擇方法,從底層實現來說:通過動態代理技術,讓接口跑起來,之后采用命令模式,最后還是采用了sqlsession的接口方法(getMapper()方法等到Mapper)執行sql查詢(也就是說Mapper接口方法的底層實現還是采用了Sqlsession的接口方法實現的)。
(2)selsession的四個重要對象
1)Execute:調度執行StatementHandler、ParmmeterHandler、ResultHandler執行相應的SQL語句;
2)StatementHandler:使用數據庫中的Statement(PrepareStatement)執行操作,即底層是封裝好的PrepareStatement;
3)ParammeterHandler:處理SQL參數;
4)ResultHandler:結果集ResultSet封裝處理放回。