camel-test3-17/camel-mybatis-yml
..
2025-03-16 12:16:41 +00:00
2025-03-16 12:16:41 +00:00

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脚本
psql -U postgres -f src/main/resources/db/init.sql

构建和运行

  1. 克隆项目
  2. 使用Maven构建项目
mvn clean package
  1. 运行应用程序:
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