# 学生信息宿舍字段显示问题分析 ## 问题描述 用户反馈:后台数据库里有宿舍楼和宿舍号相关信息,但是学生信息详情页没有展示。 ## 问题分析 ### 1. 前端页面分析 #### 详情页面字段绑定 文件:`web/src/views/xg-xx/studentInfo/components/StudentDetailDialog.vue` ```vue
{{ studentInfo.dormBuilding }}
{{ studentInfo.dormRoom }}
``` #### 编辑页面字段绑定 文件:`web/src/views/xg-xx/studentInfo/components/StudentEditDialog.vue` ```vue ``` **发现问题1:前端字段名称不一致** - 详情页面使用:`dormBuilding` 和 `dormRoom` - 编辑页面使用:`dormitoryBuilding` 和 `dormitoryRoom` ### 2. 后端实体类分析 #### 实体类字段定义 文件:`backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgStudentInfo.java` ```java /** * 宿舍楼 */ @TableField("dormitory_building") private String dormitoryBuilding; /** * 宿舍号 */ @TableField("dormitory_room") private String dormitoryRoom; ``` #### VO类字段定义 文件:`backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/vo/XgStudentInfoVo.java` ```java private String dormitoryBuilding; private String dormitoryRoom; ``` ### 3. 数据库字段分析 #### 数据库表结构 表名:`xg_student_info` 字段: - `dormitory_building` varchar(100) - 宿舍楼 - `dormitory_room` varchar(20) - 宿舍号 ### 4. Mapper映射分析 #### ResultMap映射配置 文件:`backend/ruoyi-modules/ruoyi-xg-xx/src/main/resources/mapper/xg/XgStudentInfoMapper.xml` ```xml ``` #### selectVoPage查询语句 ```sql SELECT id, student_no, name, gender, birth_date, phone, email, id_card, nationality, political_status, major_name, class_name, grade, college_name, dormitory_building, photo_path, guardian_name, guardian_phone, guardian_relation, emergency_contact_name, emergency_contact_phone, emergency_contact_relation, enrollment_date, student_status, remark, create_by, create_time, update_by, update_time, deleted, tenant_id, counselor_id, class_teacher_id, home_address, bank_card_no, bank_name, is_poor_student, health_status, specialties, family_income, social_activities, awards, violations, info_status, data_source, last_batch_id, last_audit_time, is_complete, completion_rate, ext_field1, ext_field2, ext_field3, ext_field4, ext_field5 FROM xg_student_info ``` **发现问题2:查询字段缺失** - 查询语句中包含 `dormitory_building` - 但是缺少 `dormitory_room` 字段 ## 根本原因分析 ### 问题1:前端字段名称不一致 - **详情页面**:使用 `dormBuilding` 和 `dormRoom` - **编辑页面**:使用 `dormitoryBuilding` 和 `dormitoryRoom` - **后端返回**:`dormitoryBuilding` 和 `dormitoryRoom` ### 问题2:Mapper查询字段缺失 - **selectVoPage查询**:只包含 `dormitory_building`,缺少 `dormitory_room` - **ResultMap映射**:正确映射了两个字段 - **数据库数据**:两个字段都有数据 ## 问题验证 ### 数据写入验证 1. ✅ 前端表单字段:`dormitoryBuilding` 和 `dormitoryRoom` 正确绑定 2. ✅ 后端实体类:`@TableField` 注解正确映射到数据库字段 3. ✅ 数据库表:字段存在且有数据 ### 数据查询验证 1. ✅ ResultMap映射:正确映射 `dormitoryBuilding` -> `dormitory_building` 2. ✅ ResultMap映射:正确映射 `dormitoryRoom` -> `dormitory_room` 3. ❌ **selectVoPage查询**:缺少 `dormitory_room` 字段 4. ❌ **前端详情页面**:字段名称错误 (`dormBuilding` 应为 `dormitoryBuilding`) ## 解决方案 ### 方案1:修复Mapper查询语句(核心问题) 在 `XgStudentInfoMapper.xml` 的 `selectVoPage` 查询中添加 `dormitory_room` 字段: ```sql SELECT id, student_no, name, gender, birth_date, phone, email, id_card, nationality, political_status, major_name, class_name, grade, college_name, dormitory_building, dormitory_room, photo_path, guardian_name, -- 其他字段... ``` ### 方案2:修复前端字段名称 在 `StudentDetailDialog.vue` 中修正字段名称: ```vue
{{ studentInfo.dormitoryBuilding }}
{{ studentInfo.dormitoryRoom }}
``` ## 结论 **主要问题**:`XgStudentInfoMapper.xml` 的 `selectVoPage` 查询语句中缺少 `dormitory_room` 字段。 **次要问题**:前端详情页面字段名称与后端不一致。 **数据状态**:数据实际上正确写入了数据库,只是查询时没有获取到 `dormitory_room` 字段,导致详情页面显示为空。 **修复优先级**: 1. 🔴 **高优先级**:修复Mapper查询语句,添加 `dormitory_room` 字段 2. 🟡 **中优先级**:修复前端详情页面字段名称不一致问题 修复完成后,宿舍楼和宿舍号信息将正常在详情页面显示。