随笔分类 - MyBatis源码分析
摘要:在MyBatis架构中SqlSession是提供给外层调用的顶层接口,它是MyBatis对外暴露的最重要的接口,用户通过该接口即可完成数据库的全部操作。在上文中我们明白了我们常用的Mybatis动态代理开发实际上底层还是依赖于SqlSession。在单独使用MyBatis框架时,我们每一次都会获取一
阅读全文
摘要:在上一篇文章中(《MyBatis动态代理调用过程源码分析》),我们知道了MyBatis动态代理的核心是MapperProxy,在它内部封装了动态代理的调用逻辑,而我们也知道了在使用动态代理进行操作的时候实际上还是调用的SqlSession中的API去实现的,那么我们今天就来分析一波SqlSessio
阅读全文
摘要:MyBatis提供了一种动态代理实现SQL调用的功能,使用者只需要在映射文件中配置SQL语句与映射规则即可完成SQL调用和结果集封装。下面代码展示了动态代理调用的基本步骤: public void testMyBatisBuild() throws IOException { InputStream
阅读全文
摘要:说明:本文参考至https://www.jianshu.com/p/baba62bbc107 MyBatis 在进行参数处理、结果映射时等操作时,会涉及大量的反射操作。为了简化这些反射相关操作,MyBatis 在 org.apache.ibatis.reflection 包下提供了专门的反射模块,对
阅读全文
摘要:优秀的ORM框架都应该提供缓存机制,MyBatis也不例外,在org.apache.ibatis.cache包下面定义了MyBatis缓存的核心模块,需要注意的是这个包中只是MyBatis缓存的核心实现,并不涉及一级缓存和二级缓存的实现,本文同样没有涉及到一二级缓存的具体实现方式的讲解。 在阅读缓存
阅读全文
摘要:数据源对象是比较复杂的对象,其创建过程相对比较复杂,对于 MyBatis 创建数据源,具体来讲有如下难点: MyBatis 不但要能集成第三方的数据源组件,自身也提供了数据源的实现;数据源的初始化参数较多,比较复杂; 在MyBatis中使用了工厂模式来实现数据源的创建,使用代理模式来帮助实现自己的数
阅读全文
摘要:MyBatis源码的logging包下是日志模块的相关实现,Mybatis日志模块通过适配器模式和代理模式优雅的实现了SQL日志的输出功能。 一. 适配器模式实现了MyBatis对第三方日志框架的适配 Mybatis内部没有提供日志实现类,需要接入第三方的日志组件,但第三方组件都有自己的log级别,
阅读全文