237 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Camel MyBatis 用户管理 RESTful API
这是一个使用Apache Camel、MyBatis和YAML DSL实现的用户管理RESTful API示例项目。该项目不依赖Spring框架使用PostgreSQL作为数据库。
## 功能特点
- 基于Apache Camel实现RESTful API
- 使用YAML DSL定义Camel路由
- 使用MyBatis进行数据库访问
- 支持用户的CRUD操作
- 支持分页查询和高级复杂搜索
- 支持多条件组合的高级搜索功能
- 使用PostgreSQL作为数据库
## 技术栈
- Apache Camel 3.20.0
- MyBatis 3.5.11
- PostgreSQL 42.5.1
- Jetty (用于HTTP服务器)
- SLF4J (用于日志记录)
## 项目结构
```
src/main/java/com/example/
├── Application.java # 应用程序入口
├── model/ # 数据模型
│ ├── User.java # 用户实体类
│ ├── PageRequest.java # 分页请求
│ ├── PageResponse.java # 分页响应
│ └── AdvancedSearchRequest.java # 高级搜索请求
├── mapper/ # MyBatis映射器
│ └── UserMapper.java # 用户数据访问接口
├── service/ # 业务服务
│ └── UserService.java # 用户服务
└── processor/ # Camel处理器
└── UserProcessor.java # 用户处理器
src/main/resources/
├── mybatis-config.xml # MyBatis配置
├── mybatis/ # MyBatis映射文件
│ └── UserMapper.xml # 用户映射XML
├── camel/ # Camel配置
│ └── routes.yaml # YAML路由定义
└── db/ # 数据库脚本
└── init.sql # 初始化SQL脚本
```
## 安装和运行
### 前提条件
- JDK 11或更高版本
- Maven 3.6或更高版本
- PostgreSQL 12或更高版本
### 数据库设置
1. 安装并启动PostgreSQL数据库
2. 执行初始化SQL脚本
```bash
psql -U postgres -f src/main/resources/db/init.sql
```
### 构建和运行
1. 克隆项目
2. 使用Maven构建项目
```bash
mvn clean package
```
3. 运行应用程序:
```bash
java -jar target/camel-mybatis-user-api-1.0-SNAPSHOT.jar
```
应用程序将在 http://localhost:8080/api 上提供服务。
## API端点
### 用户管理
- `GET /api/users` - 获取所有用户
- `POST /api/users/search` - 分页查询用户
- `POST /api/users/advanced-search` - 高级搜索用户
- `POST /api/users` - 创建新用户
- `GET /api/users/{id}` - 获取指定ID的用户
- `PUT /api/users/{id}` - 更新指定ID的用户
- `DELETE /api/users/{id}` - 删除指定ID的用户
### 分页查询示例
请求:
```json
POST /api/users/search
Content-Type: application/json
{
"page": 1,
"size": 10,
"filters": {
"username": "user",
"email": "example.com",
"active": true
},
"sortField": "createdAt",
"sortOrder": "desc"
}
```
响应:
```json
{
"page": 1,
"size": 10,
"total": 42,
"data": [
{
"id": 1,
"username": "admin",
"email": "admin@example.com",
"phone": "13800138000",
"fullName": "管理员",
"createdAt": "2023-01-01T12:00:00",
"updatedAt": "2023-01-01T12:00:00",
"active": true
},
// ...更多用户
]
}
```
### 高级搜索示例
请求:
```json
POST /api/users/advanced-search
Content-Type: application/json
{
"page": 1,
"size": 10,
"criteria": [
{
"field": "username",
"operator": "LIKE",
"value": "user"
},
{
"field": "active",
"operator": "EQ",
"value": true,
"logicalOperator": "AND"
},
{
"logicalOperator": "OR",
"subCriteria": [
{
"field": "email",
"operator": "LIKE",
"value": "gmail.com"
},
{
"field": "email",
"operator": "LIKE",
"value": "example.com",
"logicalOperator": "OR"
}
]
},
{
"field": "createdAt",
"operator": "BETWEEN",
"value": ["2023-01-01T00:00:00", "2023-12-31T23:59:59"],
"logicalOperator": "AND"
}
],
"sortField": "createdAt",
"sortOrder": "desc"
}
```
响应:
```json
{
"page": 1,
"size": 10,
"total": 15,
"data": [
{
"id": 5,
"username": "user5",
"email": "user5@example.com",
"phone": "13800138005",
"fullName": "用户五",
"createdAt": "2023-05-15T10:30:00",
"updatedAt": "2023-05-15T10:30:00",
"active": true
},
// ...更多用户
]
}
```
#### 支持的操作符
- `EQ` - 等于
- `NEQ` - 不等于
- `LIKE` - 包含
- `START` - 开始于
- `END` - 结束于
- `GT` - 大于
- `GTE` - 大于等于
- `LT` - 小于
- `LTE` - 小于等于
- `BETWEEN` - 在...之间
- `NULL` - 为空
- `NOT_NULL` - 不为空
- `IN` - 在列表中
#### 逻辑操作符
- `AND` - 与
- `OR` - 或
## 许可证
MIT