158 lines
4.4 KiB
Markdown
158 lines
4.4 KiB
Markdown
# 学生信息分页查询问题调试指导
|
||
|
||
## 问题现象
|
||
- 学生信息管理列表页面显示空白
|
||
- 数据库中有3条学生记录,但前端页面无法显示
|
||
|
||
## 调试步骤
|
||
|
||
### 第一步:启动后端服务
|
||
|
||
#### 方法1:使用启动脚本(推荐)
|
||
```bash
|
||
cd /Users/wuzhen/Documents/myworkspace/myproject/hzdyjspro/all-project
|
||
chmod +x start-backend.sh
|
||
./start-backend.sh
|
||
```
|
||
|
||
#### 方法2:手动启动
|
||
```bash
|
||
cd /Users/wuzhen/Documents/myworkspace/myproject/hzdyjspro/all-project/backend
|
||
mvn spring-boot:run -Dspring-boot.run.profiles=dev
|
||
```
|
||
|
||
#### 方法3:使用热启动脚本
|
||
```bash
|
||
cd /Users/wuzhen/Documents/myworkspace/myproject/hzdyjspro/all-project/backend
|
||
./hot-start.sh
|
||
```
|
||
|
||
### 第二步:验证服务启动
|
||
|
||
#### 检查端口占用
|
||
```bash
|
||
lsof -i :8080
|
||
```
|
||
|
||
#### 测试API连接
|
||
```bash
|
||
curl -X GET "http://localhost:8080/xg/studentInfo/list?pageNum=1&pageSize=10"
|
||
```
|
||
|
||
#### 运行调试脚本
|
||
```bash
|
||
cd /Users/wuzhen/Documents/myworkspace/myproject/hzdyjspro/all-project/test
|
||
python3 学生信息分页查询简化调试脚本.py
|
||
```
|
||
|
||
### 第三步:查看调试日志
|
||
|
||
服务启动后,访问学生信息管理页面,然后查看后端日志中的调试信息:
|
||
|
||
#### 关键日志位置
|
||
- **Controller日志**:查找 `=== 学生信息分页查询开始 ===`
|
||
- **Service日志**:查找 `=== Service层分页查询开始 ===`
|
||
- **SQL执行日志**:查找 `调试信息:开始执行自定义分页查询`
|
||
|
||
#### 预期的日志输出
|
||
```
|
||
=== 学生信息分页查询开始 ===
|
||
查询条件: XgStudentInfoBo(...)
|
||
分页参数: PageQuery(...)
|
||
构建的查询条件: SELECT * FROM xg_student_info WHERE deleted = 0 ORDER BY create_time DESC
|
||
=== Service层分页查询开始 ===
|
||
Service接收到的查询条件: ...
|
||
Mapper查询结果 - 总数: 3, 当前页记录数: 3
|
||
第一条记录详情: XgStudentInfoVo(...)
|
||
最终返回结果 - 总数: 3, 行数: 3
|
||
=== Service层分页查询结束 ===
|
||
查询结果总数: 3
|
||
查询结果行数: 3
|
||
第一条数据示例: XgStudentInfoVo(...)
|
||
=== 学生信息分页查询结束 ===
|
||
```
|
||
|
||
### 第四步:数据库验证
|
||
|
||
#### 直接查询数据库
|
||
```sql
|
||
SELECT
|
||
id, student_no, name, gender, major_name, class_name,
|
||
grade, college_name, student_status, deleted, tenant_id, create_time
|
||
FROM xg_student_info
|
||
WHERE deleted = 0 AND tenant_id = '000000'
|
||
ORDER BY create_time DESC;
|
||
```
|
||
|
||
#### 预期结果
|
||
应该返回3条记录:
|
||
- 张三 (学号: 202101001)
|
||
- 李四 (学号: 202101002)
|
||
- 王五 (学号: 202101003)
|
||
|
||
## 已添加的调试功能
|
||
|
||
### 1. Controller层调试日志
|
||
- 打印接收到的查询条件和分页参数
|
||
- 显示构建的SQL查询条件
|
||
- 输出查询结果的总数和记录数
|
||
- 展示第一条数据的详细信息
|
||
|
||
### 2. Service层调试日志
|
||
- 跟踪Lambda查询条件的构建
|
||
- 监控Mapper查询的执行结果
|
||
- 记录数据转换过程
|
||
|
||
### 3. Mapper层优化
|
||
- 使用自定义的selectVoPage方法
|
||
- 明确指定所有字段的查询
|
||
- 强制使用自定义ResultMap映射
|
||
|
||
### 4. 调试脚本
|
||
- 服务器连接状态检查
|
||
- API请求测试
|
||
- 响应数据格式验证
|
||
|
||
## 可能的问题原因
|
||
|
||
### 1. 服务未启动
|
||
- 症状:Connection refused错误
|
||
- 解决:按照第一步启动后端服务
|
||
|
||
### 2. 多租户过滤问题
|
||
- 症状:查询结果为空,但数据库有数据
|
||
- 解决:确认tenant_id = '000000'
|
||
|
||
### 3. 字段映射问题
|
||
- 症状:部分字段显示为null
|
||
- 解决:已通过自定义ResultMap修复
|
||
|
||
### 4. MyBatis配置问题
|
||
- 症状:查询不使用自定义映射
|
||
- 解决:已重写selectVoPage方法
|
||
|
||
## 下一步操作
|
||
|
||
1. **启动服务**:使用上述方法启动后端服务
|
||
2. **访问页面**:打开学生信息管理页面
|
||
3. **查看日志**:观察控制台输出的调试信息
|
||
4. **分析问题**:根据日志信息定位具体问题
|
||
5. **反馈结果**:将日志信息提供给开发者进行进一步分析
|
||
|
||
## 预期修复效果
|
||
|
||
修复后,学生信息管理页面应该:
|
||
- ✅ 显示总记录数:3
|
||
- ✅ 显示学生列表:张三、李四、王五
|
||
- ✅ 显示完整字段:学号、姓名、性别、专业、班级等
|
||
- ✅ 支持分页功能
|
||
- ✅ 支持搜索筛选
|
||
|
||
---
|
||
|
||
**调试完成时间**:2025-07-15 09:05
|
||
**修改文件**:
|
||
- XgStudentInfoController.java(添加调试日志)
|
||
- XgStudentInfoServiceImpl.java(添加调试日志)
|
||
- XgStudentInfoMapper.java(重写分页方法)
|
||
- XgStudentInfoMapper.xml(自定义分页查询) |