MyBatis Plus原理是什么?

MyBatis Plus的工作原理是通过实现Mybatis的插件功能,在SQL执行的生命周期中加入自己的逻辑。

具体来说,MyBatis Plus实现了以下插件点:

  1. Executor:Executor 插件用于加入分页逻辑。
  2. ParameterHandler:用于处理 Wrapper 条件。
  3. StatementHandler:对SQL进行分页和条件处理。
  4. ResultSetHandler:处理ID生成器。
  5. 等等多个插件点。

这些插件在对应的时机:

  • 调用原始方法 invocation.proceed() 执行下一个插件
  • 在前后加入自己的逻辑

例如分页插件会在执行SQL前:

public Object intercept(Invocation invocation) throws Throwable {
    Object[] args = invocation.getArgs();

    // 添加分页类的属性
    Page page = extractPage(args); 
    ....

    // 调用原始方法,执行真正的SQL
    Object result = invocation.proceed();

    // 处理返回结果,只取一页数据
   return result;
}

通过实现多个插件点,MyBatis Plus可以在执行SQL的不同阶段加入自己的逻辑。

从而实现分页,条件构造,缓存等增强特性。

总的来说,MyBatis Plus是通过Mybatis插件功能来实现各种增强的。

它利用在SQL执行周期中的多个插件点,加入各种逻辑。