# 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