当前位置: 首页 > 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<Void> add(@RequestBody QuestionAddDTO questionAddDTO){return toR(questionService.add(questionAddDTO)) ;}

Service

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

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

    @Overridepublic int add(QuestionAddDTO questionAddDTO) {List<Question> list=questionMapper.selectList(new LambdaQueryWrapper<Question>().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<QuestionDetailVO> 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<Void> 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<Void> 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.dtcms.com/a/423466.html

相关文章:

  • 空间设计网站yahoo搜索引擎
  • 网站建设合同英文软件外包公司名单
  • Java基础(①Tomcat + Servlet + JSP)
  • 连云港百度推广总代理上海谷歌seo公司
  • ssl外贸网站网站空间托管
  • k8s kubelet 10250监控端口访问配置
  • 十二、伪分布式配置
  • VScode通过跳板机连接内网服务器
  • wordpress小说下载站建设银行网站如何下载u盾
  • 餐饮行业做微信网站有什么好处网站上图怎么用ps做
  • 设计的网站都有哪些功能辛集哪做网站
  • PostgreSQL的逻辑复制spill溢出案例和启停库逻辑
  • OpenMQTTGateway 技术全解:统一多协议到 MQTT 的开源网关
  • 数据结构——二叉树学习
  • 动规:回文串问题
  • PostgreSQL WAL 日志发展史 - pg7
  • 商丘企业网站建设团队网站设计的内容以及步骤
  • 网站域名所有人wordpress 子域名
  • ListenHub:AI播客平台,一句话生成播客
  • 知名的媒体发稿代理有哪些
  • PyTorch nn.Linear 终极详解:从零理解线性层的一切(含可视化+完整代码)
  • 大型企业级金融信贷平台需求报告
  • 【算法】小点:List.remove
  • 文件扩展名.js .jsx .ts .tsx区别(JavaScript扩展名、React扩展名、TypeScript扩展名)
  • MySQL 在金融系统中的应用:强一致性与高可用架构实战
  • 销售型网站营销目标查网址是否安全
  • 媒体发稿平台如何选
  • 靠谱的综合门户媒体发稿如何选
  • 学习:uniapp全栈微信小程序vue3后台(29)
  • 装修设计网站排名新浪短网址链接