查询与条件白名单
只有标注的字段进 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编辑此页 →