关于vue通讯springBoot,新增数据立即返回自增id

关于vue通讯springBoot,新增数据立即返回自增id

后端sel语句 添加两个属性useGeneratedKeys=“true” keyProperty="pojo中的属性名(例如:id)"
在这里插入图片描述
前端代码

   //增加
      addstu(){
        var myThis=this;
        // 填充对象值
        var tableData={
          stuName:this.stuName,
           teaId:this.teaId,
           creatTime:this.creatTime
        }
        this.$ajax.post("/doAdd",tableData).then(function(response){
          if(response.data.success==1){
            // 再次改变对象值 加入后端返回的id值
            tableData={
              stuName:myThis.stuName,
               teaId:myThis.teaId,
               creatTime:myThis.creatTime,
               // 通过response.data.id拿到后端返回id值
               id:response.data.id
            }
            alert("新增成功")
             myThis.students.push(tableData)
          }
        }).catch(function(error){
          console.log(error)
        })
      },
      exitone(){
        this.addTable=false
      }

后端controller

//新增数据
    @RequestMapping("/doAdd")
    @ResponseBody
    public Object doAdd(@RequestBody Student student){
        Map<String,Object> maps = new HashMap<>();
       int count = studentService.add(student);
       int id = student.getId();
       maps.put("success",count);
       maps.put("id",id);
       return maps;
    }
### 实现 Spring Boot 中的多级评论系统设计 #### 数据库表结构设计 为了支持多级评论,数据库的设计至关重要。通常情况下,会创建一张 `comments` 表来保存所有的评论信息。该表应至少包含以下字段: - id (主键, 自) - content (评论内容) - user_id (用户ID) - parent_id (父评论ID,默认为null表示顶级评论) - create_time (创建时间) 这种自关联的方式能够很好地表达父子关系。 ```sql CREATE TABLE comments ( id BIGINT AUTO_INCREMENT PRIMARY KEY, content TEXT NOT NULL, user_id BIGINT NOT NULL, parent_id BIGINT DEFAULT NULL REFERENCES comments(id), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` #### 后端接口实现 ##### 创建 Comment Entity 类 定义实体类用于映射数据库中的记录。 ```java @Entity public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String content; private Long userId; @ManyToOne(targetEntity = Comment.class, fetch = FetchType.LAZY) @JoinColumn(name="parent_id", referencedColumnName="id") private Comment parentComment; // Getters and Setters... } ``` ##### Controller 层处理请求 通过 RESTful API 来接收来自客户端的数据并调用服务层的方法完成相应的操作。这里展示了一个简单的例子,其中包含了新增一条回复的功能[^3]。 ```java @RestController @RequestMapping("/api/comments") public class CommentController { @Autowired private CommentService commentService; @PostMapping("") public ResponseEntity<Comment> addComment(@Valid @RequestBody CommentDTO dto){ Comment newComment = this.commentService.add(dto.getContent(), dto.getUserId(), dto.getParentId()); return ResponseEntity.ok(newComment); } } ``` ##### Service 层逻辑编写 负责具体的业务流程控制和服务封装,在此部分实现了添加新评论的具体过程。 ```java @Service @Transactional public class CommentServiceImpl implements CommentService{ @Autowired private CommentRepository repository; @Override public Comment add(String content, long userId, Long parentId) { Comment comment = new Comment(); comment.setContent(content); comment.setUserId(userId); if(parentId != null && !parentId.equals(0L)){ Optional<Comment> optionalParent = this.repository.findById(parentId); if(optionalParent.isPresent()){ comment.setParentComment(optionalParent.get()); }else{ throw new RuntimeException("Invalid Parent ID"); } } return this.repository.save(comment); } } ``` #### 前端交互设计建议 对于前端而言,推荐采用 Vue.js 或其他类似的框架来进行页面渲染和事件绑定。当用户点击某个评论下的“回复”按钮时,可以通过 AJAX 请求向服务器发送新的子评论数据;同时也可以利用递归组件的方式来呈现具有层次感的评论列表[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值