用了这么久的 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