MyBatis 分页插件开发
PageHelper 内部到底怎么实现的?手写一个 MyBatis 分页插件,深入理解插件拦截机制。 一、MyBatis 插件的拦截原理 1.1 可拦截的四大对象——Executor / ParameterHandler / StatementHandler / ResultSetHandler 1.2 拦截哪个对象决定插件的功能——分页插件拦截 Executor 或 StatementHandler 1.3 Plugin.wrap() 动态代理的实现 二、分页插件设计思路 2.1 拦截点选择——Executor.query() 还是 Statemen...
MyBatis 执行链路详解
MyBatis 是如何把 XML 中的 <select> 标签变成一行 JDBC 查询的?本文从源码角度追踪完整链路。 一、MyBatis 核心架构 1.1 四大核心对象:SqlSession / Executor / StatementHandler / ResultSetHandler 1.2 架构分层图——接口层 → 数据处理层 → 基础支撑层 二、SqlSession——与 MyBatis 交互的门面 2.1 SqlSessionFactory → SqlSession 的创建 2.2 DefaultSqlSession ——sel...