# api-mediator
**Repository Path**: suwensen/api-mediator
## Basic Information
- **Project Name**: api-mediator
- **Description**: 基于 Springboot 的 API 服务脚手架
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2025-03-10
- **Last Updated**: 2025-12-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**## Getting started
# SpringBoot+MyBatis codeless DSL Query Framework 🚀
[](https://opensource.org/licenses/Apache-2.0)
[](https://spring.io/projects/spring-boot)
[](https://mybatis.org/mybatis-3/)
一个基于Spring Boot + MyBatis的声明式低代码查询框架,通过结构化DSL实现低代码**零SQL**的复杂数据查询。
## 🌟 核心特性
- **📦 即插即用**:5分钟快速集成!!!
- **🔍 智能解析**:支持GET/POST参数生成的DSL转换为动态SQL!!!
- **🛡️ 安全防护**:内置SQL防注入机制!!!
- **🌐 多库兼容**:无缝兼容MyBatis支持所有数据库!!!
- **🧩 可扩展**:可自定义操作符与查询逻辑!!!
## 🌟 DSL语法简要
### 请求参数
| 参数名称 | 类型 |是否必需| 描述 |
|-----------------|---------------------|---|----------------------------------------|
| **pageNumber** | Integer |False| 显示数据的页码,默认为1,取值范围:[1,∞),用于查询列表的接口 |
| **pageSize** | Integer |False| 每页显示的数据条数,默认为10,取值范围:[1,100],用于查询列表的接口 |
| **searchColumns** | String |False| 搜索列名(多个参数逗号分隔) |
| **keyword** | String |False| 搜索关键字 |
| **orderFields** | String |False| 排序字段(多个参数逗号分隔) |
| **orderBy** | String |False| 排序关键字(只支持DESC/ASC)参数如果错误的话,默认DESC |
| **filters** | [Filter[]](#Filter) |False| 过滤参数过滤器:支持多种过滤,各个参数之间的关系为“与”(and) |
###
Filter
|名称| 类型 |是否必需| 描述 |
|---|---------------------------|---|------------------------------|
|**name**| String |True| 过滤条件的字段名称(必须与数据库表映射的实体字段名一致) |
|**operator**| [Operator](#Operator) |False| 过滤条件的操作符,默认EQ |
|**values**| Object[] |True| 过滤条件的值 |
### Operator清单
#### 1. 基础比较操作符
| 枚举名称 | 运算符 | 说明 |
|--------------|--------|-----------------------|
| **EQ** | = | 等值匹配 |
| **NE** | <> | 不等匹配 |
| **LT** | < | 小于比较 |
| **LE** | <= | 小于等于 |
| **GT** | > | 大于比较 |
| **GE** | > = | 大于等于 |
#### 2. 集合操作符
| 枚举名称 | 运算符 | 说明 |
|----------------|----------|----------------------|
| **IN** | IN | 包含匹配 |
| **NOT_IN** | NOT IN | 排除匹配 |
#### 3. 空值判断
| 枚举名称 | 运算符 | 说明 |
|------------------|----------------|-----------------|
| **ISNULL** | IS NULL | 空值判断 |
| **IS_NOTNULL** | IS NOT NULL | 非空判断 |
#### 4. 模糊查询
| 枚举名称 | 运算符 | 说明 |
|--------------|--------|-----------------------|
| **LIKE** | LIKE | 右模糊查询(自动加%) |
---
## 快速开始 🚀
详情请参考 [api-mediator](https://gitee.com/suwensen/api-mediator/tree/master/api-demo/src/main/java/com/luons/mediator/demo)
模块代码
### Maven 依赖
```xml
io.github.luons
api-dsl
相应的版本
```
### request json 样例
```json
{
"pageNumber": 1,
"pageSize": 10,
"orderFields": "id,phone",
"orderBy": "DESC",
"filters": [
{
"name": "phone",
"operator": "not in",
"values": [
"185xxxx5116"
]
},
{
"name": "username",
"operator": "in",
"values": [
"zhang",
"li"
]
},
{
"name": "email",
"operator": "is not null",
"values": [
""
]
},
{
"name": "email",
"operator": "like",
"values": [
"abc1"
]
}
]
}
```
### 支持数据聚合
### **2. 功能特性说明**
#### **(1) 数据聚合支持**
- **多维度分组**:通过 `dimensions` 定义分组(group by)字段,支持字段别名和格式化。
- **多指标聚合**:在 `measures` 中定义聚合逻辑,支持常见聚合函数(`sum`/`avg`/`count`/`max`/`min`)。
- **嵌套聚合**:支持对聚合结果二次计算(如 `sum(order_amount) / count(user_id)`)。
### request json 样例
```json
{
"pageNumber": 1,
"pageSize": 10,
"orderFields": "username",
"orderBy": "DESC",
"dimensions": [
{
"code": "username",
"column": "username",
"alias": "userName"
}
],
"measures": [
{
"code": "age",
"column": {
"column": "age",
"alias": "ageAvg",
"aggregation": "AVG"
}
},
{
"code": "points",
"column": {
"column": "points",
"alias": "pointsSum",
"aggregation": "sum"
}
}
],
"filters": [
{
"name": "username",
"operator": "in",
"values": [
"zhangsan",
"lisi"
]
},
{
"name": "email",
"operator": "is not null",
"values": [
""
]
}
]
}
```
🌟 注意点
1. Springboot 启动文件中新增 scanBasePackages 扫描
2. controller方法头添加 @QueryFilter(UserXXEntity.class)