
【MyBatis】
文章平均质量分 84
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,是一个基于Java的持久层框架
码农爱java
好记性不如烂笔头,记录技术点滴,保持热爱。come on!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MyBatis源码分析--一级缓存、二级缓存原理
有点项目经验的朋友都知道缓存的重要性是不言而喻的,不仅仅我们在开发项目业务功能的时候使用了各种缓存,框架在设计的时候也有框架层面的缓存,尤其在查询多的场景下,缓存可以大大的减少数据库访问,提升系统效率,Mybatis 也提供了缓存,分别为一级缓存和二级缓存,默认的情况下,Mybatis 只开启一级缓存。原创 2024-06-27 09:30:00 · 1273 阅读 · 0 评论 -
MyBatis 插件(拦截器)实战(自定义实现拦截器)
自定义MyBatis 插件(拦截器) MyBatisSqlInterceptor ,统计 SQL 执行消耗的时间,并打印SQL。从结果中可以看到我们得到了 SQL 执行时间和具体的 SQL 语句,实现起来还是比较简单的,我们可以基于此拓展丰富更多的功能。前面我们分析了 MyBatis 插件(拦截器)的原理,本篇分享 MyBatis 插件(拦截器)的实战。MyBatis 使用 @Intercepts 注解来标记一个类是 MyBatis 插件(拦截器)。如有不正确的地方请各位指出纠正。原创 2024-06-26 09:30:00 · 2493 阅读 · 0 评论 -
MyBatis 源码分析-- 插件(拦截器)原理
Plugin#wrap 方法会获取目标对象的所有实现接口,通过 JDK 动态代理生成代理对象,对目标类进行代理,最终的执行器为 Plugin,通过JDK 动态代理创建了一个 Plugin 类,Plugin 实现了 InvocationHandler,熟悉动态代理的小伙伴应该都清楚,调用代理类的方法时,会调用invoke 方法,也就是说 Plugin 其实就是一个 InvocationHandler,最终会调用 Plugin#invoke 方法。同一个目标类的同一个方法是否可以被多个插件(拦截器)拦截?原创 2024-06-25 09:30:00 · 1034 阅读 · 0 评论 -
MyBatis 源码分析-- SQL请求执行流程( Mapper 接口方法的执行的过程)
MapperProxy#invoke 方法会判断执行的方法是否是 Object 类的方法,如果是就无需代理,否则才会走代理的方法,代理的方法有两个默认实现 一个是普通方法 PlainMethodInvoker 和默认方法实现 DefaultMethodInvoker。CachingExecutor#query 会判断是否使用了缓存,如果允许使用缓存会先从二级缓存查询,二级缓存中查询不到才会去查询一级缓存或者数据库,如果二级缓存为空或者不允许使用缓存就会直接去查询一级缓存或者数据库。原创 2024-06-24 09:30:00 · 1087 阅读 · 0 评论 -
MyBatis 源码分析-- getMapper(获取Mapper)
从源码可以看出,获取 Mapper 其实就是根据 Mapper 的 Class 类型从 MapperRegistry 中获取一个 MapperProxyFactory,最终调用 MapperProxyFactory.newInstance 方法创建一个代理对象,生成一个代理类来调用 Mapper 的方法,这里的 MapperProxyFactory 其实就是在获取 SqlSessionFactory 中存入 MapperRegistry 的 MapperProxyFactory。原创 2024-06-22 10:30:00 · 565 阅读 · 0 评论 -
MyBatis 源码分析--获取SqlSession
前文我们从源码层面梳理了 SqlSessionFactory 的创建过程,本篇我们继续分析一下 SqlSession 的获取过程。原创 2024-06-19 09:30:00 · 2051 阅读 · 0 评论 -
MyBatis 源码分析--SqlSessionFactory
前文我们简单的回顾了 MyBatis 的基本概念,有聊到核心组件,工作流程等,本篇我们开始深入剖析 MyBatis 的核心源码,欢迎大家持续关注。原创 2024-06-21 09:30:00 · 1085 阅读 · 0 评论 -
初识 MyBatis 【MyBatis 核心概念】
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO(Plain Ordinary Java Object)映射成数据库中的记录,MyBatis 属于半自动的ORM框架。总结:本篇简单概括 MyBatis 的概念及一些核心组件,并没有去讲解怎么去使用 MyBatis,大部分小伙伴都有使用过 MyBatis,且有很多文档去讲解怎么使用 MyBatis,感觉再次去讲怎么使用 MyBatis 有些多余。欢迎提出建议及对错误的地方指出纠正。原创 2024-06-06 10:28:48 · 745 阅读 · 0 评论 -
MyBatis 一对多查询(联合查询 ResultMap 映射 和 子查询映射)
建议使用联合查询 ResultMap 映射的方式实现一对多,做了一个小小的测试,两种方式的效率对比,联合查询 ResultMap 映射的方式的效率远高于子查询映射的方式。Mybatis 提供了 collection 标签帮助我们简化了一对多关系的查询,collection 标签一般使用于 resultMap 标签中。本文以部门和部门下人员作为演示案例,分别有部门表 dept_info 和人员表 employee_info,使用一对多查询部门下的人员。欢迎提出建议及对错误的地方指出纠正。原创 2024-05-11 15:00:18 · 961 阅读 · 1 评论