分类 Mybatis源码阅读 中的文章

Mybatis源码分析:映射体系之懒加载实现细节

懒加载是为了改善在映射结果集解析对象属性时,大量的嵌套子查询的并发效率问题,当设置懒加载后,只有在使用指定属性时才会触发子查询,从而实现分散SQL请求的目的。 按照惯例,依然是先来看一个基础的使用示例: public interface User2Mapper { User findWithLazyById(Integer id); } <resultMap id="lazyResultMap" type="com.wuwenze.mybatis.example.User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <!-- 通过fetchType="la……

阅读全文

Mybatis源码分析:映射体系之ResultMap原理

在Mybatis中,映射是指返回查询结果的ResultSet列与JavaBean属性之间的对应关系,通过ResultMapping进行映射描述,再用ResultMap封装成一个整体。 按照惯例,先来看一个基本的使用例子: <resultMap id="fullResultMap" type="com.wuwenze.mybatis.example.User"> <!--主键字段--> <id property="id" column="id"/> <!--普……

阅读全文

Mybatis源码分析:一级&二级缓存原理

通过分析Executor的源码,发现Mybatis的缓存逻辑都在执行器中实现,本文将继续探讨多级缓存命中场景以及其实现原理。 先来回顾一下Executor的结构: 如果你还没有看过Executor执行器的源码分析,可以通过下面的链接阅读更多: Mybatis源码分析:深入认识Execu……

阅读全文

Mybatis源码分析:深入认识Executor执行器

本文的目的是疏通Mybatis的整体执行流程,并重点理解Executor在其中扮演的重要作用。 JDBC执行过程 在开始了解mybatis之前,有必要先回顾一下JDBC的整体流程,因为mybatis的底层实际上就是JDBC。 final List<User> result = new ArrayList<>(); final String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/test"; // 获取连接 & 预编译SQL try (final Connection conn = DriverManager.getConnection(jdbcUrl, "root",……

阅读全文