MyBatis 是一个优秀的 Java 持久化框架,SSM 框架组合(Spring + SpringMVC + Mybatis),依赖 MyBatis 搭建的项目更是数不胜数,在互联网公司的使用中,占据了大片江山,你在使用 MyBatis 吗?会使用你真的了解 MyBatis 吗?
刚好,趁着现在还有时间,这里将技术面试Mybatis中最常见的面试问题和解答思路整理一下,由于篇幅原因这里只展示了目录和内容截图展示,下面是这份MyBatis的内容展示一起来看一下吧。
一、MyBatis筑基
MyBatis 是一个容易上手的持久层框架,使用者通过简单的学习即可掌握其常用特性的用法,这也是 MyBatis 被广泛使用的原因之一。在深入分析 MyBatis 源码前,我想先向大家介绍一下 MyBatis 的一些基础知识这一部分针对基础差点的,选择性跳过。
目录
内容展示
二、配置件解析过程
比较了JDBC、SpringJDBC、Hibernate和 MyBatis等 4 种持久层技术的优缺点,以及各自的使用场景。最后演示了单独使用 MyBatis,和在Spring 中使用 MyBatis 等两种不同的方式。
目录
内容展示
三、映射件解析过程
分析映射文件解析的过程。与配置文件不同,映射文件用于配置 SQL 语句,字段映射关系等。映射文件中包含"、、、 < sql> 等二级节点,这些节点将在接下来内容中进行分析
目录
内容展示
四、SQL 执流程
对 MyBatis 执行 SQL 的过程进 行较为详尽的分析。该过程比较复杂,涉及的技术点很多。包括但不限于以下技术点:
1. 为 mapper 接口生成实现类
2. 根据配置信息生成 SQL,并将运行时参数设置到 SQL 中
3. 一二级缓存的实现
4. 插件机制
5. 数据库连接的获取与管理
6. 查询结果的处理,以及延迟加载等
如果大家能掌握上面的技术点,那么对 MyBatis 的原理将会有很深入的理解。
目录
内容展示
五、内置数据源
MyBatis 支持三种数据源配 置,分别为 UNPOOLED、POOLED 和 JNDI。并提供了两种数据源实现,分别是 UnpooledDataSource 和 PooledDataSource 。 在这三种数据源配置中, UNPOOLED 和 POOLED 是我们最常用的两种配置,这两种数据源也是本章要重点分析的对象。至于 JNDI, MyBatis 提供这种数据源的目的是为了让其能够运行在 EJB 或应用服务器等容器中
目录
内容展示
六、缓存机制
在 Web 应用中,缓存是必不可少的组件。通常我们都会用 Redis 或 memcached 等缓 存中间件,拦截大量奔向数据库的请求,以减轻数据库压力。作为一个重要的组件,MyBatis 自然也在内部提供了相应的支持。通过在框架层面增加缓存功能,可减轻数据库的压力,同 时又可以提升查询速度,可谓一举两得。MyBatis 缓存结构由一级缓存和二级缓存构成,这 两级缓存均是使用 Cache 接口的实现类。因此本章将首先会向大家介绍 Cache 几种实现类 的源码,然后再分析一级和二级缓存的实现。
目录
七、插件机制
一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的 好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行 拓展,使其能够更好的工作。以 MyBatis 为例,我们可基于 MyBatis 插件机制实现分页、 分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入 插件,在无形中增强功能。 开发 MyBatis 插件需要对 MyBatis 比较深了解才行,一般来说最好能够掌握 MyBatis 的源码,门槛相对较高。本篇文章在分析完 MyBatis 插件机制后,会手写一个简单的分页 插件,以帮助大家更好的掌握 MyBatis 插件的编写。
目录
内容展示
市面上真正适合学习的MyBatis资料太少,有的书或资料虽然讲得比较深入,但是语言晦涩难懂,大多数人看完这些书基本都是从入门到放弃,有需要获取学习资料的朋友关注作者并转发,私信作者【学习】二字,便可以领取学习资料喔