sqlx-query-dsl
这是一个基于 sqlx (MySQL) 的动态查询构建工具库。它允许通过 JSON 结构定义复杂的查询条件(包括嵌套的 AND/OR 逻辑),并提供了安全的分页查询封装。
✨ 特性
- 🛡️ 安全优先: 内置字段白名单 (
FieldWhitelist) 机制,严格校验字段名,防止 SQL 注入。 - 🌳 嵌套逻辑: 支持任意深度的
AND/OR逻辑嵌套。 - 📄 分页封装: 自动处理
COUNT(*)查询和分页LIMIT/OFFSET计算。 - 🔌 JSON 驱动: 查询参数结构体
QueryParams设计用于直接反序列化前端传入的 JSON。
📦 安装
在你的 Cargo.toml 中添加:
[]
= { = "." } # 或者指向你的 git 仓库/crates.io 版本
= { = "0.8", = ["mysql", "runtime-tokio-rustls"] }
= { = "1.0", = ["derive"] }
= "1.0"
🚀 使用指南
1. 定义数据模型
use FromRow;
use Serialize;
2. 执行分页查询
use QueryParams;
use FieldWhitelist;
use query_page;
use MySqlPool;
async
3. 前端 JSON 参数示例
前端发送的 JSON 请求体示例:
🛠️ 支持的操作符 (Op)
| 操作符 | SQL 映射 | 说明 |
|---|---|---|
eq, ne |
=, != |
相等/不相等 |
like |
LIKE |
模糊匹配 (自动包裹 %value%) |
gt, lt |
>, < |
大于/小于 |
gte, lte |
>=, <= |
大于等于/小于等于 |
in, not_in |
IN, NOT IN |
列表包含 |
between |
BETWEEN |
范围查询 (需传入数组 [min, max]) |
is_null, is_not_null |
IS NULL |
空值检查 |
json_contains |
JSON_CONTAINS |
JSON 字段查询 |