当前位置: 首页 > news >正文

自用:在使用SpringBoot做学生信息管理系统时遇到的问题

1、在做完查询测试时,一直报出404找不到错误,原因是没有为各个层的实现类添加注解
2、改完之后发现测试没有数据,是因为我写的返回值类型为空,应该返回一个List< Student >
3、我没有想到要写Result实体类,因为不理解它存在的意义:

它是一种常见的用于封装接口响应结果的实体类,能够统一响应格式:定义code(响应码)、msg(响应信息)和data(返回数据)三个属性;便于前端处理。
不写这个类是可行的,比如直接返回业务数据本身,或者返回简单的字符串等。但这样会导致接口响应格式不统一,前端处理逻辑复杂,不利于项目的长期维护和迭代。

package com.example.stusystem.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;
    private String msg;
    private Object data;

    public static Result success(){
        return new Result(1,"success",null);
    }

    public static Result success(Object data){
        return new Result(1,"success",data);
    }

    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}

service层和dao层返回List,controller层把List装进success参数中返回。
4、在写前端时methods写成了method
5、axios.get(’ ')里面是单引号
6、循环里插值表达式是两个花括号

<tr v-for="Student in Students":key="Student.id">
    <td>{{Student.id}}</td>
    <td>{{Student.name}}</td>
    <td>{{Student.sex}}</td>
    <td>{{Student.age}}</td>
</tr>

7、先写后端,用postman测试后端接口没问题后去写前端,不管其他层返回什么,控制层总返回一个相应结果Result。
8、
在这里插入图片描述
9、在data中添加newStu的属性

data: {
    newStu: {
        name: "",
        age: null, //初始化为null或0等合适的值
        sex: "", //1、普通属性添加
        address: {//2、对象嵌套添加
            province: "",
            city: "",
            district: ""
        },
        hobbies: [] //3、数组属性添加,初始化为空数组,之后可以通过 this.newStu.hobbies.push('阅读') 等方式往数组里添加元素。
    },
    Students: []
}

10、删除或者按照id查找一条数据时,注意两点:
路径变量要加花括号、方法参数前面要加注解。

@DeleteMapping("/dept/{id}")
@Override
public Result delOneController(@PathVariable Integer id) {//把路径变量绑定到方法参数上,可以将路径变量动态获取的值传给方法的参数。
    deptServiceImpl.delOneService(id);
    return Result.success();
}

11、这个按钮也要被< td >包起来,不然他不在表格里面

<td>
    <button @click="deleteOne">删除</button>
</td>

并且!!!里面要传id不然点删除按钮没反应啊,传的是当前循环的Student的id

<button @click="deleteOne(Student.id)">删除</button>

12、在做删除的前端时,要用反引号,并且使用${id}

deleteDept(id){
    if(confirm("确认删除该条记录吗?"){
        axios.delete(`http://localhost:8080/dept/${id}`).then(
        ()=>this.loadDepts()//重新加载
    )}
}

13、在更新时当然要先写获取一条数据的接口方法,要不然你怎么改,所以也更容易理解查询一条返回Student对象,查询所有列表返回List< Student >。
14、更新是最麻烦的,在更新之前需要写一个查询一条信息的后端接口,思路如下:

先通过get获取原来的数据,设置新值创建新的对象,然后通过put方法,把新对象作为参数传进去,实现更新。

15、拼写错误!!!
Vue中是methods,不是method,写错了会导致没反应
response和data以及update这些都是常拼错的

相关文章:

  • Npfs!NpFsdCreate函数分析之从NpCreateClientEnd函数分析到Npfs!NpSetConnectedPipeState
  • MySQL表的增删改查进阶版
  • Java学习——day29(并发控制高级工具与设计模式)
  • JavaWeb-04-Web后端基础(SpringBootWeb、HTTP协议、分层解耦、IOC和DI)
  • 智慧社区数据可视化中枢平台——Axure全场景交互式大屏解决方案
  • ESP-IDF 开发框架:探索ESP32的强大底层世界
  • 高校智慧能源系统解决方案:推动绿色校园建设的智能化实践
  • 02_通过调用硅基流动平台deepseekapi按输入的标题生成文章
  • 4.3 某箱体上自动涂胶视觉引导功能解析
  • 记一次InternVL3- 2B 8B的部署测验日志
  • C 语言 第八章 文件操作
  • ElMessage
  • Redis 分布式锁实现原理与实战全解析
  • 腾讯云开发+MCP:旅游规划攻略
  • 修改idea/android studio等编辑器快捷注释从当前行开头的反人类行为
  • 车载以太网-TLS
  • 网络基础1
  • intructor库实现可迭代对象输出
  • LangChain高阶技巧:动态配置Runnable组件的原理剖析与实战应用
  • Spring AI高级RAG功能查询重写和查询翻译
  • 125%→10%、24%税率暂停90天,对美关税开始调整
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 睡觉总做梦是睡眠质量差?梦到这些事,才要小心
  • 警方通报:某博主遭勒索后自杀系自导自演,已立案调查
  • 铁路部门:确保沿线群众安全,焦柳铁路6个区段将陆续安装防护栅栏
  • 旭辉控股集团主席林中:债务重组是活下来的前提,自营开发业务收缩至少数核心城市