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

深入解析:微服务项目->在线oj系统(Java-Spring)--增删改

后端代码

增添

toR

QuestionAddDTO

了解前端添加一个问题需要我们传入什么数据

package com.bite.system.model.question.DTO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class QuestionAddDTO {private String title;private Integer difficulty;private Long timeLimit;private Long spaceLimit;private String content;private String questionCase;private String defaultCode;private String mainFuc;
}

Controller

  @PostMapping("/add")public R add(@RequestBody QuestionAddDTO questionAddDTO){return toR(questionService.add(questionAddDTO)) ;}

Service

首先通过mapper进行查询,查询我们的数据库里面是否存在相同标题的题目,如果有,抛出异常,然后异常统一捕获,返回给前端报错

如果所增加题目并不在数据库里面,则新创建一个Question对象,然后将我们前端传来参数(DTO)复制给question对象,然后让数据库进行插入操作

    @Overridepublic int add(QuestionAddDTO questionAddDTO) {List list=questionMapper.selectList(new LambdaQueryWrapper().eq(Question::getTitle,questionAddDTO.getTitle()));if(CollectionUtil.isNotEmpty(list)){throw new ServiceException(ResultCode.FAILED_ALREADY_EXISTS);}Question question = new Question();BeanUtil.copyProperties(questionAddDTO, question);int insert = questionMapper.insert(question);return insert;}

如果插入成功,新增数据将会出现在我们列表的第一个,否则传给前端错误原因

修改

@Data
public class QuestionEditDTO extends QuestionAddDTO{private Long questionId;
}

当我们点开修改页面的时候,会根据id自动获取到相关的详细内容

  @GetMapping("/detail")public R detail(Long questionId) {return R.ok(questionService.detail(questionId));}

首先通过id进行查询,看是否存在这本书,如果不存在抛出异常

如果数据库中有该题,则从数据库里面查询到数据,然后创建一个返回给前端的VO

@Data
public class QuestionDetailVO {private Long questionId;private String title;private Integer difficulty;private Long timeLimit;private Long spaceLimit;private String content;private String questionCase;private String defaultCode;private String mainFuc;
}

然后将值复制给这个VO类,返回VO

 @Overridepublic QuestionDetailVO detail(Long questionId) {Question question = questionMapper.selectById(questionId);if (question == null) {throw new ServiceException(ResultCode.FAILED_NOT_EXISTS);}QuestionDetailVO questionDetailVO = new QuestionDetailVO();BeanUtil.copyProperties(question, questionDetailVO);return questionDetailVO;}

然后继续进行修改操作

  //  /question/edit@PutMapping("/edit")public R edit(@RequestBody QuestionEditDTO questionEditDTO) {return toR(questionService.edit(questionEditDTO));}

通过前端的输入框获得数据,然后点击按键去进行调用后端函数,将参数传入赋值

  @Overridepublic int edit(QuestionEditDTO questionEditDTO) {Question oldQuestion = questionMapper.selectById(questionEditDTO.getQuestionId());if (oldQuestion == null) {throw new ServiceException(ResultCode.FAILED_NOT_EXISTS);}oldQuestion.setTitle(questionEditDTO.getTitle());oldQuestion.setDifficulty(questionEditDTO.getDifficulty());oldQuestion.setTimeLimit(questionEditDTO.getTimeLimit());oldQuestion.setSpaceLimit(questionEditDTO.getSpaceLimit());oldQuestion.setContent(questionEditDTO.getContent());oldQuestion.setQuestionCase(questionEditDTO.getQuestionCase());oldQuestion.setDefaultCode(questionEditDTO.getDefaultCode());oldQuestion.setMainFuc(questionEditDTO.getMainFuc());return questionMapper.updateById(oldQuestion);}

通过id去搜索搜索之前存入的数据,如果不存在抛出异常,

然后对之前的内容进行赋值,之后使用Mapper进行修改

删除

有了前面俩个的学习,我们接下来就会轻松许多,我们这里后端只做第三步

直接通过id去数据库进行删除操作

    //  /question/delete@DeleteMapping("/delete")public R delete(Long questionId) {return toR(questionService.delete(questionId));}
 @Overridepublic int delete(Long questionId) {Question question = questionMapper.selectById(questionId);if (question == null) {throw new ServiceException(ResultCode.FAILED_NOT_EXISTS);}return questionMapper.deleteById(questionId);}

http://www.gsyq.cn/news/31542.html

相关文章:

  • 2025年重庆/四川/贵州/云南/山西加气砖厂家/ALC条板厂家最新综合推荐榜:聚焦绿色建材与自动化升级
  • 2025年比较好的金属封边条厂家最新推荐排行榜
  • 2025年靠谱的引风机行业内口碑厂家排行榜
  • 2025年10月油烟机品牌榜:海信领衔全维度对比评测
  • 2025年知名的不锈钢链轮标准尺寸参数TOP实力厂家推荐榜
  • 2025年质量好的广州工厂洗碗机厂家最新实力排行
  • 2025年质量好的催化剂拟薄水铝石厂家推荐及选择参考
  • 2025年10月安全大模型产品对比榜:恒脑全栈能力解析
  • 完整教程:dify离线安装
  • 2025年评价高的洁净室起重机TOP品牌厂家排行榜
  • 2025年10月旅游景区游船厂家推荐榜:电动船,画舫船,观光船,保洁船,执法艇实力品牌优选
  • 2025年口碑好的折叠插入门实力厂家TOP推荐榜
  • 2025 年店招门头制作设计公司最新推荐榜,聚焦企业技术实力与市场口碑深度解析
  • 2025年口碑好的三回程烘干机厂家推荐及选购参考榜
  • 2025 年换热器厂家最新推荐:优质企业榜单重磅发布,涵盖板式 / 列管式 / 石墨式等多类型设备及核心优势解析
  • 2025年高压加速老化设备厂家推荐排行榜,高压加速老化HAST,高压加速老化PCT,热流仪源头厂家专业测评与选购指南
  • 20234320 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025年耐用的冷弯机组厂家最新TOP实力排行
  • 2025年10月三聚氰胺饰面板生产厂家前十权威推荐
  • 2025年知名的309s不锈钢带厂家最新用户好评榜
  • 2025年靠谱的蜗轮丝杆升降机厂家实力及用户口碑排行榜
  • 2025 年直流电弧炉厂家最新推荐榜单:中国冶金设备协会权威测评发布,深度解析行业领先企业核心优势,含等离子 / 节能 / 环保 / 固废处理 / 线路板用设备企业
  • 电梯调度算法系统:结对项目总结博客
  • 2025年热门的柜门五金铰链优质厂家推荐榜单
  • 2025年北京合同买卖律师权威推荐榜单:租赁合同纠纷/遗产赠予/房产合同专业律师团队精选
  • 2025年可靠的双管板换热器厂家最新权威实力榜
  • 2025年北京遗产赠予律师权威推荐榜单:租赁合同纠纷/合同买卖/房产合同专业律师团队精选
  • 2025年有实力的清洗机TOP实力厂家推荐榜
  • xss漏洞、文件上传漏洞、命令执行漏洞和文件包含漏洞
  • 2025年诚信的双锥干燥机热门厂家推荐榜单