用了這麼久的 mybatis, 今天看一下它是如何工做的。java
在配spring mybatis 的時候咱們都會有一個spring-mybatis.xml 文件。裏面定義了這麼一個beanspring
fly.fky.restapi.dao //這是一個包名, dao 的聲明都在這裏
當咱們啓動服務時候,MapperScannerConfigurer 類會將咱們配置的包解析出來sql
註冊到全局beanFactory 裏面api
這個 配置了咱們一些sql 語句文件路徑mybatis
在這些文件解析後會把 <insert>、<delete>、<update>、<select> 解析成MappedStatement 對象。app
一個MappedStatement對應mapper文件中的一個<insert>、<delete>、<update>、<select>,每次執行MyBatis操做的時候先獲取對應的MappedStatement。代理
經過SqlSessionTemplate 這個類代理調用 selectOne rest
而後進入 DefaultSqlSession 找到 上面解析儲存的 MappedStatementcode
在這裏才真正的執行了sql 語句.xml