MyBatis中常用设计模式(面试重点)

MyBatis中使用的设计模式(面试重点)

MyBatis 框架在设计和实现过程中广泛使用了多种设计模式,这里列举一些关键的设计模式及其在 MyBatis 中的应用:

  1. Builder模式

    • SqlSessionFactoryBuilder,用于根据配置信息构建 SqlSessionFactory 实例。
    • XMLConfigBuilder
    • XMLMapperBuilder
    • XMLStatementBuilder
    • CacheBuilder 类用于构建 Cache 对象。
  2. 工厂模式

    • SqlSessionFactory 类充当了工厂的角色,用来创建 SqlSession 对象。
    • ObjectFactory 用于创建实体类实例。
    • MapperProxyFactory 用于生成 Mapper 接口的动态代理实例。
  3. 单例模式

    • ErrorContextLogFactory 等类实现单例模式,保证系统中只有一个实例。
  4. 代理模式

    • Mybatis实现的核心,在MapperProxy 类上,它实现了 JDK 动态代理机制,为开发者调用的 Mapper 接口生成代理对象,实现在背后执行 SQL 语句的功能。
    • ConnectionLogger 类也是代理模式的运用,它代理了 java.sql.Connection,在执行 SQL 时添加日志记录功能。
    • 还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;
  5. 组合模式

    • SqlNode 及其子类(如 ChooseSqlNodeTrimSqlNode 等)构成了组合模式,用于动态拼接 SQL 语句片段。
  6. 模板方法模式

    • BaseExecutor 抽象类定义了执行 SQL 的基本流程(模板),其子类如 SimpleExecutorReuseExecutor 等则针对具体执行策略进行了扩展。

    1、SimpleExecutor: 默认的 Executor,每个 SQL 执行时都会创建新的 Statement
    2、ResuseExecutor: 相同的 SQL 会复用 Statement
    3、BatchExecutor: 用于批处理的 Executor
    4、CachingExecutor: 可缓存数据的 Executor,用代理模式包装了其它类型的 Executor
    5、CachingExecutor为二级缓存执行器,BaseExecutor为一级缓存执行器。

  7. 适配器模式

    • MyBatis 的 Log 接口和其各种实现(如 Slf4jImplCommonsLoggingImpl 等)体现了适配器模式,它们对接不同的日志框架,统一了日志输出方式。
  8. 装饰者模式

    • MyBatis 的缓存包中,通过装饰者模式实现缓存的扩展功能,如 LoggingCacheDecoratorScheduledCacheRefresher 等,它们增强了基础缓存的功能。
  9. 迭代器模式

    • PropertyTokenizer 类在处理属性表达式时,起到了类似迭代器的作用,用于遍历和解析嵌套属性路径。
  10. 责任链模式

    • MyBatis 的拦截器(Interceptor)体系,通过责任链模式串联起来,拦截器链中的每个拦截器都能依次对执行 SQL 的请求进行处理。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示