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或更高版本
数据库设置
- 安装并启动PostgreSQL数据库
- 执行初始化SQL脚本:
psql -U postgres -f src/main/resources/db/init.sql
构建和运行
- 克隆项目
- 使用Maven构建项目:
mvn clean package
- 运行应用程序:
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的用户
分页查询示例
请求:
POST /api/users/search
Content-Type: application/json
{
"page": 1,
"size": 10,
"filters": {
"username": "user",
"email": "example.com",
"active": true
},
"sortField": "createdAt",
"sortOrder": "desc"
}
响应:
{
"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
},
// ...更多用户
]
}
高级搜索示例
请求:
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"
}
响应:
{
"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