![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
普通网友
这个作者很懒,什么都没留下…
展开
-
MyBatis 源码分析笔记 sql 执行
我们可以看到,Executor 的直接子类有 BaseExecutor 和 CachingExecutor 两个。 实际上,CachingExecutor 在 BaseExecutor 的基础上,实现二级缓存功能。 在下文中,BaseExecutor 的本地缓存,就是一级缓存。 每当我们使用 MyBatis 开启一次和数据库的会话,MyBatis 会创建出一个 SqlSession 对象表示一次数据库会话,而每个 SqlSession 都会创建一个 Executor 对象。 在对数据库的一...原创 2020-07-03 16:31:39 · 151 阅读 · 0 评论 -
MyBatis 源码分析笔记 初始化02 statement && 注解配置 && SqlNode
XMLStatementBuilder MyBatis 加载注解配置 org.apache.ibatis.builder.annotation.MapperAnnotationBuilder,Mapper 注解构造器,负责解析 Mapper 接口上的注解 SqlNode 初始化 MyBatis 中的scripting模块,会根据用户传入的实参,解析映射文件中定义的动态 SQL 节点,并形成数据库可执行的 SQL 语句。之后会处理 SQL 语句中的占位符,绑定用户传入的实...原创 2020-07-03 16:28:57 · 197 阅读 · 0 评论 -
MyBatis 源码分析笔记 初始化01 Config && mapper 初始化
01 Mybatis config 加载 MyBatis 的初始化流程的入口是 SqlSessionFactoryBuilder 的#build(Reader reader, String environment, Properties properties)方法 一、新建xml的解析器parser,然后调用parse方法解析,构建出SqlSessionFactory #typeAliasesElement(XNode parent)方法,解析<type...原创 2020-07-02 23:50:24 · 129 阅读 · 0 评论 -
MyBatis 知识点01
为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。 而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的...原创 2020-05-05 21:09:04 · 100 阅读 · 0 评论 -
MyBatis 源码分析笔记01 构建mapper
程序入口为openSession,会调用openSessionFromDataSource()方法创建sqlSession 一、创建sqlSession 1. 从configuration中获取environment 2. 然后根据环境environment获取transactionFactory 3.调用事务工厂创建事务tx 4. 调用conf...原创 2019-09-20 17:40:39 · 100 阅读 · 0 评论 -
MyBatis 源码分析笔记02 执行查询
MapperProxy 1.首先构建并且缓存MapperMethod,调用cachedMapperMethod: 先从缓存中获取,如果没有就新建一个mapperMethod,然后放入到缓存methodCache中。 2.构建好method后,就调用execute方法执行 3.执行类型分成insert,把参数转化成为sql命令的参数,执行插入insert,返回影响行数的结果 4.upda...原创 2019-09-20 21:22:28 · 87 阅读 · 0 评论 -
MyBatis 源码分析笔记04 缓存
缓存使用注意事项 在介绍一级缓存时我们提到Mybatis的一级缓存是SqlSession级别的缓存,不同的SqlSession之间缓存是不共享的,如果两个SqlSession操作同一张表,这时候就可能出现其中一个SqlSession获取到的数据是过期的,我们在使用这个SqlSession查询就有可能读取过期的脏数据。 在介绍二级缓存时我们提到二级缓存是namespace...原创 2019-09-24 11:17:54 · 67 阅读 · 0 评论 -
MyBatis 源码笔记 03 更新数据流程
1、还是先从配置文件加载MappedStatement 2. 调用executor.update执行,有以下几个executor的实现 3.原创 2019-09-24 11:17:47 · 76 阅读 · 0 评论 -
MyBatis 源码分析笔记05 工作流程梳理
MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 其次是Mybatis的几个核心概念。 SqlSession : 代...原创 2019-10-08 15:47:56 · 155 阅读 · 0 评论