数据与写入

查询与条件白名单

只有标注的字段进 WHERE;类型不符即抛错;排序与分页都有护栏。

条件白名单

  • 查询对象中只有标注 @QueryField 的字段进入 WHERE;未标注的一律忽略,多传字段不改变查询语义。
  • 可用类型:EQ / LIKE / GT / GE / LT / LE / IN / BETWEEN;ignoreEmpty 默认跳过空值。
  • 条件字段必须能解析到实体真实列,否则首次调用即抛异常——拼写错误必须在开发期暴露,而不是线上静默返回空。

模糊查询

LIKE 已自动转义 %、_ 与转义符自身,并显式声明 ESCAPE。业务代码里不要再手工转义一遍。

排序

  • orderBy 必须是实体属性名或真实列名,白名单校验,非法值抛异常。
  • 无排序时自动补主键降序,保证翻页行序稳定(否则第二页会重复第一行)。
  • join 类查询用另一套排序白名单(key 是接口可传字段、value 是带表别名的列名),两套不通用。

分页

  • pageSize 上限 100,页码越界不回绕。
  • 出参统一 PageResult<T>,禁止把 MyBatis-Plus 的 Page<T> 作为接口出参(会泄漏内部字段)。
  • 单表分页优先走框架能力,不写 XML、不建载体类;只有多表 join、自定义 count、排序键表达不了实体属性时才手写 SQL。

提示:深分页与全表捞进内存再过滤,是两类最常见的性能事故,框架在接口层就把它们堵住了。

最后更新 2026-10-09编辑此页 →