![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
文章平均质量分 79
Mybatis
星光之子0317
这个作者很懒,什么都没留下…
展开
-
Mybatis级联映射与懒加载
级联映射与懒加载概述一对多关联映射一对一关联映射Discriminator详解级联映射实现原理ResultMap概述ResultMap解析过程级联映射实现原理懒加载机制懒加载实现原理概述所谓的懒加载,就是当在一个实体对象中 关联 其他实体对象时,如果不需要获取被关联的实体对象,则不需要为 被关联的实体 执行 额外的查询操作,仅当 调用 当前实体的Getter方法 获取 被关联实体对象时,才会执行一次额外的查询操作通过这种方式在一定程度上能够减轻数据库的压力一对多关联映射MyBatis的Mapper原创 2021-12-12 19:03:47 · 840 阅读 · 0 评论 -
Mybatis-SqlSession执行Mapper过程
SqlSession执行Mapper过程概述Mapper接口的注册过程MapperProxyMapperProxyFactoryMapperRegistryMappedStatement注册过程Mapper方法调用过程SqlSession执行Mapper过程概述将SqlSession执行Mapper过程拆解为4部分Mapper接口的注册过程MappedStatement对象的注册过程Mapper方法的调用过程SqlSession执行Mapper的过程Mapper接口的注册过程Mapper原创 2021-09-09 12:21:30 · 476 阅读 · 0 评论 -
Mybatis-SqlSession的创建过程
XPath方式解析XML文件概述XPath方式解析XML文件概述SqlSession对象 表示 MyBaits框架 与 数据库 建立的会话可以通过SqlSession实例 完成 对数据库的增删改查操作为了简化流程描述,将SqlSession的创建过程拆解为3个阶段Configuration实例的创建过程SqlSessionFactory实例的创建过程SqlSession实例化的过程XPath方式解析XML文件MyBatis的主配置文件和Mapper配置都使用的是XML格式MyBati原创 2021-09-09 00:48:39 · 844 阅读 · 0 评论 -
Mybatis动态SQL(四)-#{}和${}的区别
#{}和${}的区别`${}`参数占位符解析过程总结${}参数占位符解析过程当动态SQL配置中存在${}参数占位符时,MyBatis会使用TextSqlNode对象描述对应的SQL节点,在调用TextSqlNode对象的apply()方法时会完成动态SQL的解析也就是说,${}参数占位符的解析是在TextSqlNode类的apply()方法中完成的在TextSqlNode类的apply()方法中,首先调用createParser()方法 创建一个 GenericTokenParser对象通过 Ge原创 2021-12-12 21:13:46 · 708 阅读 · 0 评论 -
Mybatis动态SQL(一)-动态SQL的使用
动态SQL的使用概述概述动态SQL指的是事先无法预知具体的条件,需要在运行时根据具体的情况动态地生成SQL语句MyBatis动态SQL相关的标签如下:<choose|when|otherwise>:这几个标签需要组合使用,类似于Java中的switch语法。这组标签与<if>标签不同的是,所有的<when>标签和<otherwise>标签是互斥的,当任何一个标签满足条件时,其他标签均视为条件不成立<foreach>:该标签用于对集合参数原创 2021-09-08 10:10:02 · 70 阅读 · 0 评论 -
Mybatis缓存(四)-二级缓存实现原理
二级缓存实现原理概述CachingExecutor类TransactionalCacheManagerCachingExecutor#queryCachingExecutor#update概述MyBatis二级缓存在默认情况下是关闭的,因此需要通过设置cacheEnabled参数值为true来开启二级缓存SqlSession 将 执行Mapper的逻辑 委托给 Executor组件完成,而Executor接口有几种不同的实现,分别为SimpleExecutor、BatchExecutor、ReuseE原创 2021-09-07 22:54:16 · 1852 阅读 · 4 评论 -
Mybatis缓存(三)-一级缓存实现原理
一级缓存实现原理BaseExecutor类MyBatis的一级缓存是SqlSession级别的缓存,SqlSession提供了面向用户的API,但是真正执行SQL操作的是Executor组件Executor采用模板方法设计模式,BaseExecutor类用于处理一些通用的逻辑,其中一级缓存相关的逻辑就是在BaseExecutor类中完成的一级缓存使用PerpetualCache来实现BaseExecutor类在BaseExecutor类中维护了两个PerpetualCache属性 protec原创 2021-09-07 19:46:11 · 332 阅读 · 0 评论 -
Mybatis缓存(二)-缓存实现类
缓存实现类Cache接口Cache接口MyBatis的缓存基于JVM堆内存实现,即所有的缓存数据都存放在Java对象中MyBatis通过 Cache接口 定义缓存对象的行为,代码如下:/** * SPI for cache providers. * <p> * One instance of cache will be created for each namespace. * <p> * The cache implementation must have a c原创 2021-09-07 19:34:02 · 253 阅读 · 0 评论 -
Mybatis缓存(一)-MyBatis缓存的使用
MyBatis缓存的使用MyBatis的缓存分为一级缓存和二级缓存,一级缓存默认是开启的,而且不能关闭至于一级缓存为什么不能关闭,MyBatis核心开发人员做出了解释:MyBatis的一些关键特性(例如通过<association>和建立级联映射、避免循环引用(circular references)、加速重复嵌套查询等)都是基于MyBatis一级缓存实现的,而且MyBatis结果集 映射相关代码 重度依赖CacheKey,所以目前MyBatis不支持关闭一级缓存MyBatis提供了一个配原创 2021-09-07 18:48:58 · 456 阅读 · 2 评论 -
Mybatis(一)-常用工具类
Mybatis常用工具类MetaObjectMetaClassObjectFactoryProxyFactoryMetaObjectMetaObject是MyBatis中的反射工具类,使用MetaObject工具类,可以很优雅地获取和设置对象的属性值:调用SystemMetaObject类的forObject()静态方法创建一个与实例对象关联的MetaObject对象通过MetaObject对象的getValue()方法以表达式的方式获取实例对象的属性值使用MetaObject对象的setVal原创 2021-07-26 21:50:45 · 349 阅读 · 0 评论