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执行流程。这里只是先大概了解一下,有什么不正确的地方请大家斧正。
相关文章推荐
- Mybatis 源码解析(三) - properties标签
- mybatis之XML解析源码分析
- Mybatis3源码分析(16)-Sql解析执行-结果集映射(ResultSetHandler)
- Mybatis-Spring SqlSessionTemplate 源码解析
- Mybatis 源码之Plugin类解析
- MyBatis源码分析(1)-MapConfig文件的解析
- 【mybatis源码分析】原理分析之三:初始化(配置文件读取和解析)
- Mybatis3源码分析(14)-Sql解析执行-StatementHandler
- Mybatis3源码分析(13)-Sql解析执行-BoundSql的加载-2
- MyBatis官方教程及源码解析——类型别名、类型处理器的解析
- Mybatis3源码分析(三):解析mapper的xml配置文件
- Mybatis 源码解析(二) - Configuration.xml解析
- Mybatis 源码解析(一) - Configuration.xml加载
- Mybatis3源码分析(15)-Sql解析执行-Statement初始化和参数设置
- Mybatis3源码分析(三):解析mapper的xml配置文件
- mybatis源码追踪1——Mapper方法用法解析
- mybatis源码解析(4)
- IK中文分词扩展自定义词典【源码解析:文中是Configuration类,但是我的是Configuration接口,DefaultConfig类,可能ik版本不一致】
- Mybatis 源码之Plugin类解析
- MyBatis官方教程及源码解析——mapper映射文件