![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyBatis源码分析
文章平均质量分 86
听到微笑
这个作者很懒,什么都没留下…
展开
-
源码分析——MyBatis与Spring整合后如何保证SqlSession线程安全
在MyBatis架构中SqlSession是提供给外层调用的顶层接口,它是MyBatis对外暴露的最重要的接口,用户通过该接口即可完成数据库的全部操作。在上文中我们明白了我们常用的Mybatis动态代理开发实际上底层还是依赖于SqlSession。在单独使用MyBatis框架时,我们每一次都会获取一个全新的SqlSession,然后通过它获取Mapper代理对象。因为MyBatis中SqlSession的实现类(DefaultSqlSession)是一个线程不安全的类,所以Mapper代理对象和其依赖的Sq原创 2020-05-21 16:02:53 · 2345 阅读 · 0 评论 -
源码分析——MyBatis核心接口SqlSession的实现原理
在上一篇文章中(《MyBatis动态代理调用过程源码分析》),我们知道了MyBatis动态代理的核心是MapperProxy,在它内部封装了动态代理的调用逻辑,而我们也知道了在使用动态代理进行操作的时候实际上还是调用的SqlSession中的API去实现的,那么我们今天就来分析一波SqlSession的源码,由于SqlSession中方法很多,我们就已查询方法为例进行分析。一. 核心接口SqlS...原创 2020-05-04 13:00:45 · 1514 阅读 · 0 评论 -
从源码的角度弄懂MyBatis动态代理开发原理
MyBatis提供了一种动态代理实现SQL调用的功能,使用者只需要在映射文件中配置SQL语句与映射规则即可完成SQL调用和结果集封装。下面代码展示了动态代理调用的基本步骤:public void testMyBatisBuild() throws IOException { InputStream input = Resources.getResourceAsStream("SqlSes...原创 2020-04-30 15:35:57 · 857 阅读 · 1 评论 -
MyBatis反射模块源码分析
说明:本文参考至https://www.jianshu.com/p/baba62bbc107MyBatis 在进行参数处理、结果映射时等操作时,会涉及大量的反射操作。为了简化这些反射相关操作,MyBatis 在 org.apache.ibatis.reflection 包下提供了专门的反射模块,对反射操作做了近一步封装,提供了更为简洁的 API。一. ReflectorMyBatis 提...原创 2020-04-30 15:31:33 · 308 阅读 · 0 评论 -
MyBatis缓存模块源码分析
优秀的ORM框架都应该提供缓存机制,MyBatis也不例外,在org.apache.ibatis.cache包下面定义了MyBatis缓存的核心模块,需要注意的是这个包中只是MyBatis缓存的核心实现,并不涉及一级缓存和二级缓存的实现,本文同样没有涉及到一二级缓存的具体实现方式的讲解。在阅读缓存模块源码之前,读者们应该首先弄懂装饰器模式的含义,因为缓存模块的实现是装饰器模式的一种最佳实践,只有...原创 2020-04-30 15:28:29 · 327 阅读 · 0 评论 -
MyBatis数据源模块源码分析
数据源对象是比较复杂的对象,其创建过程相对比较复杂,对于 MyBatis 创建数据源,具体来讲有如下难点:MyBatis 不但要能集成第三方的数据源组件,自身也提供了数据源的实现;数据源的初始化参数较多,比较复杂;在MyBatis中使用了工厂模式来实现数据源的创建,使用代理模式来帮助实现自己的数据源。一 . MyBatis数据源模块类结构MyBatis数据源模块的代码全部位于org....原创 2020-04-30 15:23:41 · 317 阅读 · 0 评论 -
MyBatis日志模块源码分析
MyBatis源码的logging包下是日志模块的相关实现,Mybatis日志模块通过适配器模式和代理模式优雅的实现了SQL日志的输出功能。一. 适配器模式实现了MyBatis对第三方日志框架的适配Mybatis内部没有提供日志实现类,需要接入第三方的日志组件,但第三方组件都有自己的log级别,并且各不相同,Mybatis 在内部定义了Log接口统一提供了trace debug warn er...原创 2020-04-30 15:19:18 · 412 阅读 · 0 评论