摘要:Mybatis是个优秀的ORM框架,所以它的反射层一定不会让我们失望 图比较大,可以开新页面查看 可以看到,Mybatis对这一块抽象的比较复杂,我们可以看到有几个比较主要的部分:Reflector、Invoker、PropertyTokenizer、MetaClass,MetaObject和Obj
阅读全文
摘要:首先从配置文件说起,有个cacheEnabled的配置项,当设置为true时(默认就是true),Session就会用一个CachingExecutor来包装我们的Executor实例: 这是一个装饰者模式,在大部分情况下是直接转发调用的,在update方法和query方法中分别根据mapper中s
阅读全文
摘要:如上图所示,mybatis默认支持7种日志记录的方式,也可以自己实现Log接口,然后将实现类通过LogFactory注入到日志工厂中。 LogFactory是日志模块的入口,外层通过getLog获取Log对象,然后调用Log接口方法进行日志的记录,代码示例: LogFactory的初始化过程: 按照
阅读全文
摘要:mybatis将所有的异常全部包成了运行时异常,减少在高层代码中频繁的try-catch导致的代码臃肿问题。Persistence是它们共有的父类,继承自RuntimeException非检查型异常。IbatisException已经被弃用,每个异常类包装了它们对应的组件的异常信息,根据异常的类型和
阅读全文
摘要:mybatis的两大重要组件:配置和映射文件,都是可以通过xml配置的(新版本新增了注解的方式配置Mapper),下面来解析下mybatis是怎么做的 其中,关于配置文件解析的主要是在这个类XMLConfigBuilder里面的parseConfiguration方法,XMLConfigBuilde
阅读全文