
MyBatis
文章平均质量分 97
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
RyanJohnson
敏于观察,勤于思考,善于综合,勇于创新。
展开
-
MyBatis 源码分析 - 插件机制
文章目录1.简介2. 插件机制原理3. 源码分析3.1 植入插件逻辑3.2 执行插件逻辑4. 实现一个分页插件5. 总结1.简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以 MyBatis 为例,我们可基于 MyBatis 插件机制实现分页、分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能。开发 MyBatis转载 2021-05-14 23:20:13 · 2003 阅读 · 0 评论 -
MyBatis 源码分析 - 缓存原理
文章目录1.简介2.缓存类介绍2.1 PerpetualCache2.2 LruCache2.3 BlockingCache3. CacheKey4.一级缓存5.二级缓存6.总结参考1.简介在 Web 应用中,缓存是必不可少的组件。通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力。作为一个重要的组件,MyBatis 自然也在内部提供了相应的支持。通过在框架层面增加缓存功能,可减轻数据库的压力,同时又可以提升查询速度,可谓一举两得。MyBatis转载 2021-05-14 23:18:01 · 2356 阅读 · 0 评论 -
MyBatis 源码分析 - 内置数据源
文章目录1.简介2.内置数据源初始化过程3.UnpooledDataSource3.1 初始化数据库驱动3.2 获取数据库连接4.PooledDataSource4.1 辅助类介绍4.2 获取连接4.3 回收连接4.4 小节5.总结1.简介本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑。搞懂这些数据源的实现,可使大家对数据源有更深入的认识。同时在配置这些数据源时,也会更清楚每种属性的意义和用途。因此,如果大家想知其然,也知其所以然。那么接下来就让我们一起去探索 MyBatis 内置数据源的源转载 2021-05-01 16:56:53 · 1587 阅读 · 2 评论 -
MyBatis 源码分析 - SQL 的执行过程
文章目录* 本文速览1.简介2.SQL 执行过程分析2.1 SQL 执行入口分析2.1.1 为 Mapper 接口创建代理对象2.1.2 执行代理逻辑2.1.2.1 创建 MapperMethod 对象① 创建 SqlCommand 对象② 创建 MethodSignature 对象2.1.2.2 执行 execute 方法2.2 查询语句的执行过程分析2.2.1 selectOne 方法分析2.2.2 获取 BoundSql2.2.2.1 DynamicContext2.2.2.2 解析 SQL 片段2.转载 2021-04-11 18:08:11 · 4002 阅读 · 7 评论 -
MyBatis 源码分析 - 映射文件解析过程
文章目录1.简介2.映射文件解析过程分析2.1 解析映射文件2.1.1 解析 `` 节点2.1.2 解析 `` 节点2.1.3 解析` ` 节点2.1.3.1 解析 `` 和` ` 节点2.1.3.2 解析` 1.简介在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如<cache转载 2021-04-04 00:07:17 · 3428 阅读 · 3 评论 -
MyBatis 源码分析 - 配置文件解析过程
文章目录* 本文速览1.简介2.配置文件解析过程分析2.1 配置文件解析入口2.2 解析 properties 配置2.3 解析 settings 配置2.3.1 settings 节点的解析过程2.3.2 元信息对象创建过程2.3.2.1 DefaultReflectorFactory 源码分析2.3.2.2 Reflector 源码分析2.3.2.3 PropertyTokenizer 源码分析2.3.3 小结2.4 设置 settings 配置到 Configuration 中2.5 解析 typeA转载 2021-03-14 23:14:02 · 3400 阅读 · 3 评论 -
MyBatis 源码分析 - MyBatis入门
文章目录1.本文速览2.什么是 MyBatis3.为什么要使用 MyBatis3.1 使用 MyBatis 访问数据库3.2 JDBC 和 Spring JDBC 简介3.3 MyBatis 和 Hibernate 比较4.如何使用 MyBatis4.1 在pom.xml添加依赖4.2 在application.yml配置4.3 mapper文件4.4 创建用户表与添加用户数据4.5 创建实体类4.6 新建dto和vo对象4.7 bean转换工具类4.8 用户service接口4.9 用户controlle原创 2021-03-14 23:09:44 · 5893 阅读 · 7 评论 -
MyBatis缓存
MyBatis提供查询缓存,用于减轻数据库压力,提高性能。MyBatis提供了一级缓存和二级缓存。一级缓存是SqlSession级别的缓存,每个SqlSession对象都有一个哈希表用于缓存数据,不同SqlSession对象之间缓存不共享。同一个SqlSession对象对象执行2遍相同的SQL查询,在第一次查询执行完毕后将结果缓存起来,这样第二遍查询就不用向数据库查询了,直接返回缓存结果即可。...原创 2019-09-25 10:59:33 · 5493 阅读 · 4 评论 -
MyBatis实现一对一,一对多关联查询
MyBatis如何实现一对一,一对多查询的?可以通过关联查询实现。关联查询是几个表联合查询,只查询一次,通过在resultMap里面的association,collection节点配置一对一,一对多的类就可以完成具体实现如下准备数据库表结构与数据班级classes与老师teacher是一对一的关系班级classes与学生student是一对多的关系SET NAMES utf8mb4...原创 2019-09-25 00:21:23 · 22254 阅读 · 8 评论 -
MyBatis功能架构
MyBatis功能架构主要包括API接口层,数据处理层,基础支撑层,如下图所示我们把Mybatis的功能架构分为三层:API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作...原创 2019-09-24 17:10:36 · 6981 阅读 · 2 评论 -
MyBatis工作原理
在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 M...原创 2019-09-24 16:49:36 · 8390 阅读 · 4 评论 -
MyBatis核心类
从MyBatis开发步骤可以看出,MyBatis主要运用到了一下几个类1、SqlSessionFactoryBuilder每一个MyBatis的应用程序的入口是SqlSessionFactoryBuilder。它的作用是通过XML配置文件创建Configuration对象(当然也可以在程序中自行创建),然后通过build方法创建SqlSessionFactory对象。没有必要每次访问My...原创 2019-09-24 16:47:40 · 10528 阅读 · 9 评论 -
MyBatis官方文档-入门
最近更新: 15 七月 2019|版本: 3.5.2入门安装要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:<dependency> <groupId>org.mybatis</groupId...转载 2019-09-16 14:36:21 · 8012 阅读 · 5 评论 -
MyBatis官方文档-XML 配置
最近更新: 15 七月 2019|版本: 3.5.2配置MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插...转载 2019-09-16 14:42:12 · 6800 阅读 · 2 评论 -
MyBatis官方文档-XML 映射文件
最近更新: 15 七月 2019|版本: 3.5.2XML 映射文件MyBatis 的真正强大在于它的映射语句,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦。SQL 映射文件只有很少的几个顶级元素(按照应被定义...转载 2019-09-16 14:48:17 · 6632 阅读 · 3 评论 -
MyBatis官方文档-动态 SQL
最近更新: 15 七月 2019|版本: 3.5.2动态 SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBa...转载 2019-09-16 14:49:39 · 6355 阅读 · 2 评论 -
MyBatis官方文档-Java API
最近更新: 15 七月 2019|版本: 3.5.2Java API既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了。MyBatis 的 Java API 就是你收获你所做的努力的地方。正如你即将看到的,和 JDBC 相比,MyBatis 很大程度简化了你的代码并保持代码简洁,容易理解并维护。MyBatis 3 已经引入了很多重要的改进来使得 SQL 映射更加...转载 2019-09-16 14:51:50 · 6143 阅读 · 2 评论 -
MyBatis官方文档-SQL 语句构建器类
最近更新: 15 七月 2019|版本: 3.5.2SQL 语句构建器类问题Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL语句。这么来做通常是由于SQL语句需要动态来生成-否则可以将它们放到外部文件或者存储过程中。正如你已经看到的那样,MyBatis在它的XML映射特性中有一个强大的动态SQL生成方案。但有时在Java代码内部创建SQL语句也是必要的。此时,MyBatis...转载 2019-09-16 14:53:39 · 5689 阅读 · 3 评论 -
MyBatis官方文档-日志
最近更新: 15 七月 2019|版本: 3.5.2日志Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理:SLF4JApache Commons LoggingLog4j 2Log4jJDK loggingMyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具。它会使用第一个查找得到的工具(按上文列举的顺序查找)。如果一个都未找...转载 2019-09-16 14:57:06 · 4947 阅读 · 2 评论 -
MyBatis官方文档
最近更新: 15 七月 2019|版本: 3.5.2MyBatis 是一款优秀的持久层框架,我们可以通过官方文档更好的学习和探究 Mybatis 框架原理和应用实践等。通过整理,可以分为以下八部分进行学习研究。简介入门XML 配置XML 映射文件动态 SQLJava APISQL 语句构建器类日志...原创 2019-09-16 15:00:26 · 10466 阅读 · 2 评论 -
MyBatis官方文档-简介
最近更新: 15 七月 2019|版本: 3.5.2简介什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普...转载 2019-09-16 14:33:11 · 8199 阅读 · 2 评论