当前位置: 首页 > 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.jsqmd.com/news/23390/

相关文章:

  • 2025年重庆/四川/贵州/云南/山西加气砖厂家/ALC条板厂家最新综合推荐榜:聚焦绿色建材与自动化升级
  • 2025年诚信的亚克力加工行业内口碑厂家排行榜
  • 2025年比较好的金属封边条厂家最新推荐排行榜
  • 2025年机加工重型货架厂家推荐排行榜,重型仓储货架,车间重型货架,工厂重型货架,定制重型货架公司推荐,专业承重与高效存储解决方案
  • C# 中的不安全代码(unsafe code)和指针操作
  • 2025年铝型材重型货架厂家推荐排行榜,工业仓储铝型材货架,重型货架,仓库铝型材货架,定制铝型材重型货架公司推荐
  • 2025年靠谱的引风机行业内口碑厂家排行榜
  • HTTP/1.1必须消亡:反同步攻击的终局之战
  • 2025年评价高的全品类家具五金厂家最新推荐排行榜
  • 2025年诚信的上海裸眼3DLED显示屏厂家推荐及选择指南
  • 2025年海信油烟机权威盘点:全球布局与技术突破全解析
  • 2025年10月油烟机品牌榜:海信领衔全维度对比评测
  • 2025年知名的不锈钢链轮标准尺寸参数TOP实力厂家推荐榜
  • 2025年质量好的广州工厂洗碗机厂家最新实力排行
  • 2025年优秀的不锈钢板双层保温复合风管TOP实力厂家推荐榜
  • 2025年海信油烟机权威测评:全球布局与技术突破全解析
  • 2025年质量好的催化剂拟薄水铝石厂家推荐及选择参考
  • 2025年10月安全大模型产品对比榜:恒脑全栈能力解析
  • 完整教程:dify离线安装
  • 2025年10月全屋定制品牌对比榜:五强参数服务全解析
  • cobbler for docker
  • 8 人团队如何效率拉满?——创联云的开发方法论
  • 2025年10月河南A-Level培训机构评测榜:五强对比与择校参考
  • 2025年定制托盘货架厂家权威推荐榜:重型货架、仓储货架、阁楼式货架、自动化立库货架专业选购指南
  • 2025年评价高的洁净室起重机TOP品牌厂家排行榜
  • idea配置文件修改
  • 2025年口碑好的外墙保温岩棉板厂家最新推荐排行榜
  • 2025年评价高的载带成型机最新TOP品牌厂家排行
  • 2025年口碑好的绿化带修剪机厂家最新推荐排行榜
  • 2025年10月旅游景区游船厂家推荐榜:电动船,画舫船,观光船,保洁船,执法艇实力品牌优选