用了这么久的 mybatis, 今天看一下它是如何工作的。
在配spring mybatis 的时候我们都会有一个spring-mybatis.xml 文件。里面定义了这么一个bean
fly.fky.restapi.dao //这是一个包名, dao 的声明都在这里
当我们启动服务时候,MapperScannerConfigurer 类会将我们配置的包解析出来
注册到全局beanFactory 里面
这个 配置了我们一些sql 语句文件路径
在这些文件解析后会把 <insert>、<delete>、<update>、<select> 解析成MappedStatement 对象。
一个MappedStatement对应mapper文件中的一个<insert>、<delete>、<update>、<select>,每次执行MyBatis操作的时候先获取对应的MappedStatement。
通过SqlSessionTemplate 这个类代理调用 selectOne
然后进入 DefaultSqlSession 找到 上面解析储存的 MappedStatement
在这里才真正的执行了sql 语句.