Mybatis系列
文章平均质量分 86
Mybatis源码相关学习记录和总结
EShaooo
这个作者很懒,什么都没留下…
展开
-
Mybatis(十一):源码分析-拦截器插件
Mybatis拦截器的实现:官方文档示例:https://mybatis.org/mybatis-3/zh/configuration.html#plugins拦截器用到责任链模式+动态代理+反射机制,拦截器的使用可以在不侵入业务代码的场景下,进行一些数据权限过了、SQL执行时间和性能的监控等等。自定义拦截器类:自定义的拦截器需要实现Interceptor接口,并且在自定义拦截器类上添加@Intercepts注解; 注册拦截器类:mybatis拦截器配置信息,将插件注册到全局配置文件中。使用原创 2021-07-26 09:51:25 · 459 阅读 · 0 评论 -
Mybatis(十):源码分析-各种缓存装饰类
Mybatis缓存的设计,通过Cache接口实现类:PerpetualCache:永久缓存,只有这唯一一个基础实现(org.apache.ibatis.cache.impl),其他实现类全都是装饰模式(org.apache.ibatis.cache.decorators)持有另一个缓存对象; PerpetualCache里面就是维护着一个本地的HashMap,所以不支持多线程,因为没能实现接口的锁功能,而且内部的map不是并发的map; FifoCache(先进先出缓存策略的缓存装饰类):通过双向队原创 2021-07-01 16:15:41 · 122 阅读 · 0 评论 -
Mybatis(九):源码分析-本地缓存和二级缓存
CachingExcuxtor:装饰器设计模式:缓存装饰器类,对真正的执行器Exexutor进行装饰实现缓存作用; 属性Executor delegate:委托对象,存储真正操作数据库的Executor执行器对象; 属性TransactionalCacheManager:管理CachingExecutor中使用二级缓存的对象TransactionalCache; TransactionalCache:实现Cache类,装饰了二级缓存对象;事务中需要进行二级缓存的各类数据,缓存数据在事务提交后才会真原创 2021-07-01 16:07:58 · 338 阅读 · 0 评论 -
Mybatis(八):源码分析-Executor执行SQL脚本
从上篇动态代理对象的方法都调用MapperMethod.execute()中可知,执行不同等SQL命令最终会使用数据库会话对象SqlSession来执行不同的SQL脚本,对应方法如下:INSERT:sqlSession.insert(); UPDATE:sqlSession.update(); DELETE:sqlSession.delete(); SELECT:sqlSession.select() / sqlSession.selectList() / sqlSession.selectCu.原创 2021-07-01 15:58:43 · 445 阅读 · 0 评论 -
Mybatis(七):源码分析-Mapper接口动态代理对象的方法调用
从官网Demo代码来入手:https://mybatis.org/mybatis-3/zh/getting-started.htmlMapper接口的代理对象(映射器)的方法调用动态代理生成的代理对象,调用的代理对象的任何方法都是执行调用管理器MapperProxy.invoke()方法。// 从 SqlSessionFactory 中获取 SqlSessiontry (SqlSession session = sqlSessionFactory.openSession()) {原创 2021-06-28 01:03:14 · 728 阅读 · 0 评论 -
Mybatis(六):源码分析-获取Mapper接口动态代理对象
从官网Demo代码来入手:https://mybatis.org/mybatis-3/zh/getting-started.html根据Mapper.Class对象获取接口的代理对象(映射器)// 从 SqlSessionFactory 中获取 SqlSessiontry (SqlSession session = sqlSessionFactory.openSession()) { // 映射代理器,根据Mapper.Class对象获取接口的代理对象 BlogMapper mapp原创 2021-06-28 00:57:56 · 946 阅读 · 0 评论 -
Mybatis(五):源码分析-构建SqlSeesion对象
SqlSession保存了配置文件内容信息和执行数据库相关的操作。从官网Demo代码来入手:https://mybatis.org/mybatis-3/zh/getting-started.html// 从 SqlSessionFactory 中获取 SqlSessiontry (SqlSession session = sqlSessionFactory.openSession()) { BlogMapper mapper = session.getMapper(BlogMappe原创 2021-06-28 00:50:26 · 118 阅读 · 0 评论 -
Mybatis(四):源码分析-XML配置文件和构建SqlSessionFactory对象
Mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.htmlMybatis源码(3.5.8-SNAPSHOT版本)下载:https://github.com/mybatis/mybatis-3从官网Demo代码来入手:https://mybatis.org/mybatis-3/zh/getting-started.html1、mybatis-config.xml配置文件解析 ,得到输入流;底层使用java.io下的InputStream和原创 2021-06-28 00:43:54 · 565 阅读 · 0 评论 -
Mybatis(三):Mybatis与Spring整合示例
依赖安装:<!-- 添加Spring-core包 --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.4.RELEASE</version></dependency><!-- spring -->原创 2021-06-28 00:14:46 · 171 阅读 · 0 评论 -
Mybatis(二):快速使用入门
依赖安装原创 2021-06-17 08:05:15 · 93 阅读 · 0 评论 -
Mybatis(一):JDBC传统连接数据库详解
1、配置连接数据库依赖包原创 2021-06-10 17:46:10 · 937 阅读 · 1 评论