简化版
1,解析配置文件为Configreation类----》2,调用sqlSessionFactoryBuild()---》3,sqlSessionFactory-->sqlSession-->调用extuor--->参数入参--》参数返回
初始化
1,解析配置文件mybatis-config.xml
解析setting/cacheenable标签
2,得到我们config里面的mappers的配置,解析mapper文件
3,解析mapper文件里面的增删改查
4,将我们的增删改查语句放到一个mapperstatement,并且放入到Map里面
key是:namespace+sqlid<br>value: statement
创建会话
1,确认我们的执行器 Simple Reuse,Batch
预编译处理,指的是mysql对于sql的处理
2,判断一个缓存开关(setting cacheEnable)默认
3,如果开启的话,返回的就不是基本执行器,而是缓存执行器cacheingExcutor
4,执行sql逻辑
执行语句
1.根据我们的接口的class对象拿到MapperProxyFactory
2.再拿到一个代理对象
3.所有的接口访问方法都会去调用MapperProxy的invok方法
4.查询mapperstatement,里面有很多信息,包括sql语句
5.如果你开启了缓存,走到CachingExecutor,否则走BaseExcutor
二级缓存默认关闭,config中可以关闭,就算开启,也要通过mapper控制
二级缓存config和mapper有关系 二级缓存跟着namespace
6.一级缓存呢?一级缓存是跟sqlsession有关,默认开启