这是一个基于 Spring Boot 3.2.0 的动态用户信息入库系统,支持根据配置文件动态定义数据表字段,实现灵活的数据入库功能。
- 框架: Spring Boot 3.2.0
- 数据库: MySQL 8.0.33
- ORM: MyBatis 3.0.3
- API文档: SpringDoc OpenAPI 2.1.0
- 构建工具: Maven
src/main/java/com/xztech/
├── CreateUserInfoApplication.java # 主启动类
├── common/ # 公共类
│ ├── ApiResponse.java # 统一响应格式
│ └── UserDataRequest.java # 用户数据请求类
├── config/ # 配置类
│ ├── CustomTableConfig.java # 自定义表配置
│ └── OpenApiConfig.java # OpenAPI配置
├── controller/ # 控制器
│ └── UserInfoController.java # 用户信息控制器
├── service/ # 服务层
│ └── DynamicTableService.java # 动态表服务
└── mapper/ # 数据访问层
└── DynamicTableMapper.java # 动态表映射器
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3309/workwear_check?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
server:
port: 9090 # 服务端口
# 自定义数据表以及入库字段
custom:
table-name: user_info_test # 数据表名
fields: # 字段列表
- username
- age
- email
- phone
- name
- address- 服务地址:
http://localhost:9090 - API文档:
http://localhost:9090/index.html - API文档JSON:
http://localhost:9090/api-docs
接口描述: 获取当前配置的数据表字段列表
请求信息:
- URL:
GET /api/userinfo/fields - Content-Type:
application/json
响应示例:
{
"success": true,
"message": "操作成功",
"data": [
"username",
"age",
"email",
"phone",
"name",
"address"
]
}接口描述: 向配置的数据表中插入用户信息
请求信息:
- URL:
POST /api/userinfo/add - Content-Type:
application/json
请求参数:
{
"username": "张三",
"age": 25,
"email": "zhang@test.com",
"phone": "13800138000",
"name": "张三",
"address": "北京市朝阳区"
}参数说明:
- 所有字段必须与配置文件
custom.fields中定义的字段完全匹配 - 字段名称区分大小写
- 不能包含配置文件中未定义的字段
- 不能缺少配置文件中定义的必需字段
成功响应示例:
{
"success": true,
"message": "操作完成",
"data": "数据写入成功"
}错误响应示例:
{
"success": false,
"message": "字段验证失败: 包含不允许的字段: invalid_field; 缺少必需字段: username",
"data": null
}| 错误类型 | 错误信息 | 说明 |
|---|---|---|
| 字段验证失败 | 包含不允许的字段 | 请求中包含配置文件中未定义的字段 |
| 字段验证失败 | 缺少必需字段 | 请求中缺少配置文件中定义的必需字段 |
| 系统错误 | 系统错误: [具体错误信息] | 数据库连接、SQL执行等系统级错误 |
# 编译项目
mvn clean compile
# 运行项目
mvn spring-boot:run在 application.yml 中配置数据表信息:
custom:
table-name: your_table_name # 替换为实际表名
fields: # 配置表字段
- field1
- field2
- field3根据配置的字段创建对应的MySQL数据表:
CREATE TABLE user_info_test (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255),
age INT,
email VARCHAR(255),
phone VARCHAR(20),
name VARCHAR(255),
address TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);- 首先调用
GET /api/userinfo/fields获取当前配置的字段列表 - 根据返回的字段列表构建POST请求数据
- 调用
POST /api/userinfo/add插入数据
- 系统会根据配置文件中的字段定义进行严格验证
- 确保数据的一致性和完整性
- 防止无效字段的插入
- 所有接口都使用统一的
ApiResponse<T>响应格式 - 包含成功状态、消息和数据三个字段
- 便于前端统一处理响应结果
- 集成SpringDoc OpenAPI
- 自动生成Swagger UI文档
- 支持在线测试接口功能
- 字段匹配: 请求中的字段必须与配置文件中的字段完全匹配
- 数据类型: 确保请求数据的数据类型与数据库字段类型兼容
- 数据库连接: 确保MySQL服务正常运行,连接配置正确
- 表结构: 确保数据表已创建且字段与配置一致
如需添加新的字段,请按以下步骤操作:
- 在
application.yml的custom.fields中添加新字段名 - 在数据库表中添加对应的字段
- 重启应用使配置生效
- 调用
GET /api/userinfo/fields确认字段已更新
- 版本: 1.0.0
- 更新时间: 2025年
- 作者: moon