mybatis
文章平均质量分 76
Java部落格
为了部落!!!
展开
-
Mybatis源码阅读(四)-Spring集成Mybatis-Mapper接口的注入:MapperScannerConfigurer
一、Spring包扫描注解注入会过滤掉接口类在Spring IOC容器启动的过程中,Spring会在扫描@CompopnentScan指定的路径时,会将被@Component,@Service等注解的类自动注册BeanDefinition到Spring IOC容器中,但是会过滤掉接口、抽象类,无法生成BeanDefinition,具体的源码可以查看之前的一篇文章《Spring源码阅读(四)-注册BeanDefinition-ConfigurationClassPostProcessor》的第三点。但是M原创 2021-01-31 19:16:47 · 359 阅读 · 0 评论 -
Mybatis源码阅读(三)-Spring集成Mybatis
一、DefaultSqlSession的线程安全问题从DefaultSqlSession类的注释可知,它不是一个线程安全的对象,通过DefaultSqlSessionFactory创建使用之后必须立即销毁,不能复用,只能局限于request或者方法的范围。而且在同一个Spring事务内的SqlSession只能有一个,所以Mybatis如果想集成到Spring就必须解决线程安全的问题!二、SqlSessionTemplateSqlSessionTemplate是Mybatis为了接入Spring提供原创 2021-01-29 21:27:49 · 111 阅读 · 0 评论 -
Mybatis源码阅读(二)-二级缓存
一、二级缓存介绍由上一篇文章,Mybatis的执行流程可知,CRUD实际上是交给Excetor去处理的,如下图:从图中可以看到Mybatis一二级缓存所在位置:一级缓存在BaseExecutor,二级缓存在CachingExecutor。而BaseExecutor、CachingExecutor都是Executor的子类,且CachingExecutor包含BaseExecutor。直接看下CachingExecutor#query()的源码:public <E> List<E&原创 2021-01-29 20:09:18 · 240 阅读 · 0 评论 -
Mybatis源码阅读(一)-启动过程和执行流程
一、Mybatis的启动过程:1、通过SqlSessionFactoryBuilder去读取mybatis的配置文件,封装成一个Configuration对象,然后build一个DefaultSqlSessionFactory。注意:Configuration对象有个属性mapperRegistry,而mapperRegistry对象里的knownMappers就是mybatis存放DAO的数据结构!2、获取到SqlSessionFactory之后,就可以通过SqlSessionFactory去原创 2021-01-29 19:32:36 · 233 阅读 · 0 评论 -
Mybatis插件开发
一、Mybatis插件介绍: Mybatis插件又称拦截器,Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变Mybatis的默认行为(诸如SQL重写之类的)。Mybatis的插件是采用对四大接口的对象生成动态代理对象的方法来实现的。那么现在我们看下Mybatis是怎么创建这四大接口对象的。public Executor newExecutor(Transaction transaction, ExecutorType executorType) { //原创 2020-12-04 16:21:48 · 329 阅读 · 1 评论