MyBatis Plus的工作原理是通过实现Mybatis的插件功能,在SQL执行的生命周期中加入自己的逻辑。
具体来说,MyBatis Plus实现了以下插件点:
- Executor:Executor 插件用于加入分页逻辑。
- ParameterHandler:用于处理 Wrapper 条件。
- StatementHandler:对SQL进行分页和条件处理。
- ResultSetHandler:处理ID生成器。
- 等等多个插件点。
这些插件在对应的时机:
- 调用原始方法 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执行周期中的多个插件点,加入各种逻辑。