
mybatis 源码解析
青花鱼罐头丨
java后台开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
精尽 MyBatis 源码分析 —— IO 模块
1. 概述 资源加载模块,主要是对类加载器进行封装,确定类加载器的使用顺序,并提供了加载类文件以及其他资源文件的功能 。 2. ClassLoaderWrapper org.apache.ibatis.io.ClassLoaderWrapper ,ClassLoader 包装器。可使用多个 ClassLoader 加载对应的资源,直到有一成功后返回资源。 2.1 构造方法 // ClassLoaderWrapper.java /** * 默认 ClassLoader 对象 */ ClassLoader原创 2020-08-29 19:40:26 · 362 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 类型模块
1. 概述 ① MyBatis 为简化配置文件提供了别名机制,该机制是类型转换模块的主要功能之一。 ② 类型转换模块的另一个功能是实现 JDBC 类型与 Java 类型之间的转换,该功能在为 SQL 语句绑定实参以及映射查询结果集时都会涉及: 在为 SQL 语句绑定实参时,会将数据由 Java 类型转换成 JDBC 类型。 而在映射结果集时,会将数据由 JDBC 类型转换成 Java 类型 2. TypeHandler org.apache.ibatis.type.TypeHandler ,类型转换处理器。原创 2020-08-22 14:46:34 · 421 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 日志模块
1. 概述 无论在开发测试环境中,还是在线上生产环境中,日志在整个系统中的地位都是非常重要的。良好的日志功能可以帮助开发人员和测试人员快速定位 Bug 代码,也可以帮助运维人员快速定位性能瓶颈等问题。目前的 Java 世界中存在很多优秀的日志框架,例如 Log4j、 Log4j2、Slf4j 等。 MyBatis 作为一个设计优良的框架,除了提供详细的日志输出信息,还要能够集成多种日志框架,其日志模块的一个主要功能就是集成第三方日志框架。 2. LogFactory org.apache.ibatis.lo原创 2020-08-16 11:44:17 · 254 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 缓存模块
1. 概述 在优化系统性能时,优化数据库性能是非常重要的一个环节,而添加缓存则是优化数据库时最有效的手段之一。正确、合理地使用缓存可以将一部分数据库请求拦截在缓存这一层。 MyBatis 中提供了一级缓存和二级缓存,而这两级缓存都是依赖于基础支持层中的缓 存模块实现的。这里需要读者注意的是,MyBatis 中自带的这两级缓存与 MyBatis 以及整个应用是运行在同一个 JVM 中的,共享同一块堆内存。如果这两级缓存中的数据量较大, 则可能影响系统中其他功能的运行,所以当需要缓存大量数据时,优先考虑使用 R原创 2020-08-16 10:47:56 · 347 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 事务模块
1. 概述 MyBatis 对数据库中的事务进行了抽象,其自身提供了相应的事务接口和简单实现。 在很多场景中,MyBatis 会与 Spring 框架集成,并由 Spring 框架管理事务 2. Transaction org.apache.ibatis.transaction.Transaction ,事务接口。代码如下: public interface Transaction { /** * Retrieve inner database connection. * @return原创 2020-08-15 20:39:29 · 215 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 异常模块
1.概述 定义了 MyBatis 专有的 PersistenceException 和 TooManyResultsException 异常。 2. exceptions 包 2.1 IbatisException org.apache.ibatis.exceptions.IbatisException ,实现 RuntimeException 类,IBatis 的异常基类。代码如下: @Deprecated public class IbatisException extends RuntimeExcep原创 2020-08-12 23:12:05 · 267 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 反射模块
1.概述 Java 中的反射虽然功能强大,但对大多数开发人员来说,写出高质量的反射代码还是 有一定难度的。MyBatis 中专门提供了反射模块,该模块对 Java 原生的反射进行了良好的封装,提了更加简洁易用的 API,方便上层使调用,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。 2. Reflector org.apache.ibatis.reflection.Reflector ,反射器,每个 Reflector 对应一个类。Reflector 会缓存反射操作需要的类的信原创 2020-08-09 21:09:49 · 370 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 解析器模块
1.概述 解析器模块,主要提供了两个功能: 一个功能,是对 XPath 进行封装,为 MyBatis 初始化时解析 mybatis-config.xml 配置文件以及映射配置文件提供支持。 另一个功能,是为处理动态 SQL 语句中的占位符提供支持。 源码对应 parsing 包。 2. XPathParser org.apache.ibatis.parsing.XPathParser ,基于 Java XPath 解析器,用于解析 MyBatis mybatis-config.xml 和 **Mapper.原创 2020-08-05 23:15:37 · 339 阅读 · 0 评论 -
精尽 MyBatis 源码分析 —— 项目结构一览
1.概述 MyBatis 的整体架构分为三层: 基础支持层 核心处理层 接口层 2 基础支持层 2.1 反射模块 对应 reflection 包。 Java 中的反射虽然功能强大,但对大多数开发人员来说,写出高质量的反射代码还是 有一定难度的。MyBatis 中专门提供了反射模块,该模块对 Java 原生的反射进行了良好的封装,提了更加简洁易用的 API,方便上层使调用,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。 2.2 类型模块 对应 type 包。 ① MyBa原创 2020-08-05 21:11:48 · 367 阅读 · 0 评论