闲来无事研究一下mybatis源码,有一个全局配置类Configuration,这个类中包含了完成一个sql请求需要的基本信息。先来了解一下这个类有哪些重要的成员变量,以及它们的作用,现在暂时不深究它的实现,先搞清楚原理。
首先,有一个叫ExecutorType的枚举类型,这个枚举是用于判断执行sql语句的,默认是SIMPLE,它还有两个值,一个REUSE,一个是BATCH。它们分别对应SimpleExecutor,ReuseExecutor,BatchExecutor.
接下来,有一个MapperRegistry类,这个类是用来注册Mapper的,也就是我们写代码的时候那个与xml文件对应的java接口,这个类里面就是getMapper和addMapper方法,没有其他特殊的。
然后是TypeHandlerRegistry类,看名字就知道了,和上面说的MapperRegistry一样都是注册类,这个是类型注册类,也就是将java类型与数据库类型映射的注册类。还有一个TypeAliasRegistry类,这个类我们可能用得比较少,或者根本不用,这个类用于注册别名的,如果认真学习过mybatis的同学可能有看到官网的教程里有用到这个方面的东西。
然后是一个map的集合mappedStatements,这个成员变量保存的是已映射的sql,我们写的sql语句就是保存在这个集合里面的,相应地还有resultMaps,parameterMaps等这些成员变量。注意它们的value的类型,分别是MappedStatement、ResultMap、ParameterMap,看到名字的时候有没有觉得很熟悉?这不就是对应xml文件里的sql语句相关元素和resultMap元素以及parameterMap属性吗?
接着是Langu