核心代码

1.解析配置类上的@MapperScan(“com.liqi.mapper”)
@Import(MapperScannerRegistrar.class)
会调用MapperScannerRegistrar.registerBeanDefinitions
2. ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
scanner.doScan(StringUtils.toStringArray(basePackages));
拿到路径,扫描“com.liqi.mapper”路径
3.重新doScan方法,改变beanDefinition的beanClass属性
definition.setBeanClass(this.mapperFactoryBean.getClass());
4.MapperFactoryBean.getObject,获取mapper接口的代理对象返回。
以上就是整合mybatis的核心步骤。

spring整合mybaits一级缓存失效的问题

1.mybatis源码中将sqlSession放到了threadLocal中,执行sql,其实调用的是sqlSession.SelectOne()方法,这样同一是执行命令,直接从sqlSession中返回。
2.由于mybatis的sqlSession底层中没有加锁,线程是不安全的,spring整合mybatis的时候,获取sqlSession并发放到threadLocal中,所以每一个执行命令,都会获取不同的sqlSession,解决了安全问题,但同时一级缓存也失效了。
3.如何解决失效问题:加@Transactional注解,spring底层有判断,如果有这个注解,就会放到threadLocal里,但一般我们不用mybatis的一级缓存,例如我们的数据库隔离级别是读未提交,如果有一级缓存,数据库的隔离级别失效。
以上是我对spring整合mybatis的理解。

12干货!spring整合mybatis底层源码分析相关推荐

  1. 【mybatis源码】 mybatis底层源码分析

    [mybatis源码] mybatis底层源码分析 1.测试用例 2.开撸源码 2.1 SqlSessionFactory对象的创建与获取 2.2 获取SqlSession对象 2.3 获取接口的代理 ...

  2. 视频教程-Spring底层源码分析-Java

    Spring底层源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大促活动技术保 ...

  3. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  4. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  5. 集合底层源码分析之HashMap《上》(三)

    集合底层源码分析之HashMap<上>(三) 前言 源码分析 HashMap主要属性及构造方法分析 tableSizeFor()方法源码分析 Node类源码分析 TreeNode类源码分析 ...

  6. Thinkphp底层源码分析

    Thinkphp底层源码分析第一章 首先我们学习此章节的内容大家可能需要有一些基础才行,接着对PHP内置字符窜数组相关函数会用的比较多一点,当然不太熟悉的朋友,其实可以借助手册看下去.下面我们开始正题 ...

  7. Jaca集合(四)Vector集合底层源码分析

    Vector的基本介绍: (1)Vector类的定义说明:我们进入源码界面进行查看: public class Vector<E>extends AbstractList<E> ...

  8. ArrayList底层源码分析

    声明:本文为作者原创,请勿装载,如过转载,请注明转载地址 文章目录 ArrayList底层源码分析 1. 继承Serializable接口 2. 继承Cloneable接口 2.1 浅拷贝 2.2 深 ...

  9. eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

    友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...

最新文章

  1. springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理
  2. Koa源码分析(二) -- co的实现
  3. 为 CefSharp 应用内置 C++ 运行环境并启用 AnyCPU 支持
  4. Anaconda安装库
  5. 性能测试培训: 监控CPU之python
  6. Java Web-网页基础-HTML-URL
  7. 大端机,小端机;截断与提升
  8. 再见,中关村“金三角”!
  9. Allegro PCB封装库(分类、命名很规范,已验证)
  10. 一分钟教会你固态硬盘数据恢复方法
  11. 如何编写android ANE
  12. 2019 面试系列 - 简历
  13. 人工智能时代,数据标注产业将迎来黄金时期?丨曼孚科技
  14. android教你打造独一无二的图片加载框架
  15. Mac下制作Linux Centos7启动盘
  16. quartus ii怎么生成pof和下载pof文件
  17. python棋牌游戏开发之斗地主
  18. 表单Form提交数据和PHP数据处理
  19. 俄罗斯套娃信封问题 转https://www.jianshu.com/p/9d9495ef4372
  20. docker网络的配置

热门文章

  1. 公网使用微软的RD Client访问内网下的windows主机
  2. [rospack] Warning: error while crawling /home/teabot: boost::filesystem::status: Permission denied:
  3. 多线程访问独立空间全局变量
  4. 中文名: 交通事故责任认定, 英文名称: Traffic accident responsibility identification...
  5. GWAS 质量控制(QC)分析流程
  6. 计算机平面设计专业年度工作计划,莆田职业学校计算机平面设计专业人才目标、规格、能力分析报告.doc...
  7. 学而思之判断文件是否存在路径是否正确
  8. 层净高怎么算_房屋的层高和净高怎么算?
  9. [Paper Reading-3d] AFDetV2: Real-Time Anchor-Free Single-Stage 3D Detection with IoU-Awareness
  10. [矿工]电信重组大格局,中国联通的攻守之道