Spring mybatis源码学习指引目录
前言: 分析了很多方面的mybatis的源码以及与spring结合的源码,但是难免出现错综的现象,为了使源码陶冶更为有序化、清晰化,特作此随笔归纳下分析过的内容。博主也为mybatis官方提供过pull request,并被采纳。
名词解释
- service层关联:指的是业务层调用数据持久层即dao层的接口,其需要class的配合
- 注解模式加载:指的是插件通过解析class类中方法上的注解来完成注册dao层接口的组装,比如
@select/@update等注解 - mapper配置文件加载:指的是直接读取对应的xml格式mybatis文件,以此来创建数据操作对象
org.apache.ibatis.mapping.MappedStatement
数据库持久层会话对象SqlSessionFactory
通过调用org.mybatis.spring.SqlSessionFactoryBean类来创建mybatis对应的SqlSessionFactory,其中涉及mybatis xml模式的加载mapper文件。具体可查阅>>>Spring mybatis源码篇章-SqlSessionFactoryBean
xml模式的加载只会涉及到
org.apache.ibatis.mapping.MappedStatement的加载,其与service层的调用并没有建立关系,如何建立关系则需要继续往下查阅了
数据库SQL承载者MapperStatement
可以分为以下两种方式分析org.apache.ibatis.mapping.MappedStatement是如何被组装的
注解模式加载①
涉及到CRUD的注解模式,即调用org.apache.ibatis.builder.xml.XMLConfigBuilder进行解析的。具体的可查阅>>> Spring mybatis源码篇章-MybatisDAO文件解析(一)
上述的加载方式是通过mybatis主配置文件中的
mapper节点来进行解析加载的注意:mapper节点中的
resource/url属性加载的方式都是解析对应的xml格式文件,其并没有与service层建立关联;class属性加载则是通过注解模式的加载完成了与service层的关联
mapper配置文件加载②
直接解析对应的xml格式配置文件,具体可查阅>>>Spring mybatis源码篇章-MybatisDAO文件解析(二)
对上述的方式加载配置文件过程中,我们可以重点关注下其实如何解析
select/update/delete/insert标签的sql语句的
-${}或者#{}方式的解析区别可查阅>>>Mybatis源码解析-DynamicSqlSource和RawSqlSource的区别
-
-trim/foreach/if等语句节点的解析也可查阅>>>Spring mybatis源码篇章-NodeHandler实现类具体解析保存Dynamic sql节点信息
xml格式的加载mapper方式的模式,缺少了与service层的关联,mybatis也对此作了相应的处理,通过
org.mybatis.spring.mapper.MapperScannerConfigurer类来调配,具体可查阅>>>Spring mybatis源码篇章-sql mapper配置文件绑定mapper class类
Service层调用Dao层
最后我们也要关注下MVC模式中的Service层的接口如何调用DAO层的mapperStatement接口来完成对数据库的访问操作,此处可查阅>>>Mybatis源码分析-SqlSessionTemplate
小结
更多的内容可自行查阅官方源码或者官网文档,附上mybatis官网文档地址
Spring mybatis源码学习指引目录的更多相关文章
- Spring mybatis源码篇章-sql mapper配置文件绑定mapper class类
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(二) 背景知识 MappedStatement是mybatis操作sql ...
- Spring mybatis源码篇章-MybatisDAO文件解析(一)
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-SqlSessionFactory 加载指定的mybatis主文件 Mybatis模板文件,其中的属性 ...
- Spring mybatis源码篇章-MapperScannerConfigurer关联dao接口
前言:Spring针对Mybatis的XML方式的加载MappedStatement,通过引入MapperScannerConfigurer扫描类来关联相应的dao接口以供Service层调用.承接前 ...
- mybatis源码学习(一) 原生mybatis源码学习
最近这一周,主要在学习mybatis相关的源码,所以记录一下吧,算是一点学习心得 个人觉得,mybatis的源码,大致可以分为两部分,一是原生的mybatis,二是和spring整合之后的mybati ...
- Spring mybatis源码篇章-Mybatis主文件加载
通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-SqlSessionFactory 前话 本文承接前文的内容继续往下扩展,通过Spring与Mybatis的 ...
- mybatis源码学习:一级缓存和二级缓存分析
目录 零.一级缓存和二级缓存的流程 一级缓存总结 二级缓存总结 一.缓存接口Cache及其实现类 二.cache标签解析源码 三.CacheKey缓存项的key 四.二级缓存TransactionCa ...
- mybatis源码学习:插件定义+执行流程责任链
目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...
- Spring mybatis源码篇章-MybatisDAO文件解析(二)
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(一) 默认加载mybatis主文件方式 XMLConfigBuilder ...
- Spring mybatis源码篇章-NodeHandler实现类具体解析保存Dynamic sql节点信息
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-XMLLanguageDriver解析sql包装为SqlSource SqlNode接口类 publi ...
随机推荐
- 51Nod 1091 线段的重叠(贪心+区间相关,板子题)
1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...
- bzoj:1675 [Usaco2005 Feb]Rigging the Bovine Election 竞选划区
Description It's election time. The farm is partitioned into a 5x5 grid of cow locations, each of wh ...
- DFS中的奇偶剪枝学习笔记
奇偶剪枝学习笔记 描述 编辑 现假设起点为(sx,sy),终点为(ex,ey),给定t步恰好走到终点, s | | | + — — — e 如图所示(“|”竖走,“—”横走,“+”转弯),易证abs( ...
- 并查集-HDU1232-畅通工程
转的其他人的.不知道谁的. 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的.最后要解决的是整幅图的连通性问题.比如随意 ...
- 【Keras】基于SegNet和U-Net的遥感图像语义分割
上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割,所以刚好又把前段时间做的成果重新 ...
- ThoughtWorks University之旅 —— 印度游记
ThoughtWorks University是ThoughtWorks为新加入的员工提供的入职培训项目之一,会将世界各地office新入职的员工一起带到印度浦那,参加一次为期5周的培训,内容涵盖了公 ...
- flume1.8 Channel类型介绍(四)
1. Flume Channel Channels是events在agent上进行的存储库.Source添加events,Sink移除events. 1.1 Memory Channel(内存Chan ...
- 解决 重启nginx: [alert] kill(189, 1) failed (3: No such process)
解决 nginx: [alert] kill(189, 1) failed (3: No such process) [root@localhost/]# nginx -s reloadnginx: ...
- 【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题.出现如下警告或错误提示: warning: #223-D: function &qu ...
- Insert Sort Singly List
对单链表插入排序,给出个单链表的head节点:返回排完序的head节点: 首先数据结构中习惯了以数组为参数排序,瞬间想到是遍历单链表存入arraylist中,再进行insert sort,(O(n** ...