精心挑选要阅读的源码项目;git
饮水思源——官方文档,先看文档再看源码;github
下载源码,安装到本地,保证能编译运行;sql
从宏观到微观,从总体到细节;数据库
找到入口,抓主放次,梳理核心流程;session
源码调试,找到核心数据结构和关键类;数据结构
勤练习,多折腾;mybatis
进入光标选中的propertiesElement方法内发现,mybatis初始化的时候会把配置文件内的信息放入configuration对象对应的属性内:架构
根据sql的类型update,insert,select,delete 缩小查找范围,而后根据sql的返回类型map?list?就可惟一肯定一个sqlsession执行方法app
mybatis mapper接口并无实现类,运行中如何判调用的具体方法,执行指定的sql语句???框架
遵循jdbc的规范,先上一段jdbc代码抛砖引玉:
StatementHandler:它的做用是使用数据库的Statement或PrepareStatement执行操做,启承上启下做用;
ParameterHandler:对预编译的SQL语句进行参数设置
ResultSetHandler:对数据库返回的结果集(ResultSet)进行封装,返回用户指定的实体类型;
接着上一段源码,进入selelectList()方法。
ParameterHandler 组件已经饥渴难耐了。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎全部的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 能够使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。