您的位置:首页 > 编程语言 > Java开发

mybatis源码解析------Configuration类

2017-05-27 22:54 225 查看
闲来无事研究一下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属性吗?接着是LanguageDriver,这个是指定解析的驱动,比如你可以使用velocity模板引擎来替代xml文件,默认是XMLLanguageDriver,也就是使用xml文件来写sql语句。成员变量objectFactory,类型为ObjectFactory,默认的实现类DefaultObjectFactory,这个类是用来创建bean的,比如我们的mapper里有一个方法:User getUserById(Long id) throws NoSuchRecordException;那么这个factory就是用来创建User这个类的实例的。还有一个reflectorFactory,类型为ReflectorFactory,实现类为DefaultReflectorFactory,这个是反射操作类,比如判断是否有getter和setter,获取成员变量等。这里只是粗略地将一些基本的类列出来了而已,例如涉及到sql语句解析,配置文件解析,mapping文件解析等这些相关类并没有列出来。下一篇就说一个完整的mybatis执行流程。这里只是先大概了解一下,有什么不正确的地方请大家斧正。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息