本文档由 g2rain-mybatis-extensions 的
# 运行流程
docs/architecture/runtime-flows.md 自动同步生成。# 分页查询
- 调用方使用
PageContext.of(...)创建分页作用域并执行 Mapper 查询。 PaginationQueryProcessor检测到作用域且未进入PagingEscape。- 需要总数时,从原查询生成 count SQL 并执行。
- 合并经过安全过滤的排序字段。
- 根据 JDBC URL 识别数据库,使用 MySQL 或 PostgreSQL 方言生成分页 SQL 和参数。
- 查询结果写入当前
Page,处理完成后清理作用域引用。
# SQL 解析缓存
SqlParserDelegate 解析 SQL。缓存实现以原始 SQL 为键,通过 Kryo 将 AST 序列化为字节数组后存入 Caffeine;读取时反序列化为独立对象,降低可变 AST 在并发请求间共享的风险。默认缓存上限 1024,访问后 2 小时过期,并使用软引用值。
# 自动配置
Starter 在 SqlSessionFactory 存在时生效。默认处理器顺序为 20000,可通过 g2rain.mybatis.pagination.order 调整。若应用已提供同类型处理器或组合拦截器,默认 Bean 会回退。