先大体总结一下:读取xml文件解析,解析的所有内容放入configuration,执行的时候从configuration中获取。
JDBC的mybatis的区别:
mybatis的大体结构图,这里sqlSession这里用到了门面设计模式:
加载myabtis-config.xml中的信息及具体加载的内容:
加载mapper.xml文件
最终解析的内容存入Configuration中:
缓存的调用流程,最终都是放入一个map中,缓存调用这里用了装饰者模式:
解析XML后,最终的SQL语句即是sqlSource:
sqlSource里分静态sql和动态sql,#{}为静态sql,${}为动态sql,此外需要动态标签才能装饰出来的sql也是动态sql:
创建sqlSource的方法:
不同的动态sql标签对应不同的sqlNode:
展示一下下面有多少个sqlNode吧:
这是解析sql的大体流程,有嵌套标签的话会有mixedSqlNode,其他对应的有纯文本sqlNode,whereSqlNode等,这里用了组合设计模式:
这是解析注解sql的类:



