【项目】【在线判题系统】竞赛列表
目录一、表的设计二、实体类三、功能梳理四、controller五、service六、mapper一、表的设计一张竞赛表以及一张竞赛题目关联表CREATETABLEtb_exam(exam_idBIGINTUNSIGNEDNOTNULLCOMMENT竞赛id主键,titleVARCHAR(50)NOTNULLCOMMENT竞赛标题,start_timeDATETIMENOTNULLCOMMENT竞赛开始时间,end_timeDATETIMENOTNULLCOMMENT竞赛结束时间,statusTINYINTNOTNULLDEFAULT0COMMENT是否发布 0: 未发布 1: 已发布,create_byBIGINTUNSIGNEDNOTNULLCOMMENT创建人,create_timeDATETIMENOTNULLCOMMENT创建时间,update_byBIGINTUNSIGNEDCOMMENT更新人,update_timeDATETIMECOMMENT更新时间,PRIMARYKEY(exam_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT竞赛表;CREATETABLEtb_exam_question(exam_question_idBIGINTUNSIGNEDNOTNULLCOMMENT关系id主键,question_idBIGINTUNSIGNEDNOTNULLCOMMENT题目id,exam_idBIGINTUNSIGNEDNOTNULLCOMMENT竞赛id,question_orderINTNOTNULLCOMMENT题目顺序,create_byBIGINTUNSIGNEDNOTNULLCOMMENT创建人,create_timeDATETIMENOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT创建时间,update_byBIGINTUNSIGNEDCOMMENT更新人,update_timeDATETIMEONUPDATECURRENT_TIMESTAMPCOMMENT更新时间,PRIMARYKEY(exam_question_id),KEYidx_exam_id(exam_id),KEYidx_question_id(question_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT竞赛题目关联表;二、实体类oj-modules/oj-system/src/main/java/com/yj/system/domain/exam包下新增两张表对应的实体类。packagecom.yj.system.domain.exam;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importcom.yj.common.core.domain.BaseDO;importlombok.Getter;importlombok.Setter;importjava.time.LocalDateTime;/** * 竞赛表 */GetterSetterTableName(tb_exam)publicclassExamDOextendsBaseDO{/** * 竞赛id主键 */TableId(typeIdType.AUTO)// 如果你的主键是自增的用AUTO如果是雪花ID用ASSIGN_IDprivateLongexamId;/** * 竞赛标题 */privateStringtitle;/** * 竞赛开始时间 */privateLocalDateTimestartTime;/** * 竞赛结束时间 */privateLocalDateTimeendTime;/** * 是否发布 0:未发布 1:已发布 */privateIntegerstatus;}packagecom.yj.system.domain.exam;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importcom.yj.common.core.domain.BaseDO;importlombok.Data;importlombok.Getter;importlombok.Setter;importjava.time.LocalDateTime;/** * 竞赛题目关联表 */GetterSetterTableName(tb_exam_question)publicclassExamQuestionDOextendsBaseDO{/** * 竞赛题目关系id主键 */TableId(typeIdType.AUTO)privateLongexamQuestionId;/** * 题目id */privateLongquestionId;/** * 竞赛id */privateLongexamId;}三、功能梳理竟赛列表功能:用户切换到竞赛管理。前端携带着相关参数发起获取竞赛列表的请求。后端接收到请求之后根据请求的参数从数据库当中查询符合条件的竞赛。并且将查询结果返回给前端。(成功或者失败)前端接收到后端返回的响应之后如果成功把查询到的列表数据展示到页面当中。如果失败提示用户失败的原因。四、controlleroj-modules/oj-system/src/main/java/com/yj/system/controller/exam/ExamController.java定义controller类packagecom.yj.system.controller.exam;importcom.yj.common.core.controller.BaseController;importcom.yj.common.core.pojo.TableDataInfo;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.service.exam.IExamService;importio.swagger.v3.oas.annotations.tags.Tag;importjakarta.annotation.Resource;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;RestControllerRequestMapping(/exam)Tag(name竞赛管理接口)publicclassExamControllerextendsBaseController{ResourceprivateIExamServiceexamService;GetMapping(/list)publicTableDataInfolist(ExamQueryDTOexamQueryDTO){returngetTableDataInfo(examService.list(examQueryDTO));}}接收参数oj-modules/oj-system/src/main/java/com/yj/system/domain/exam/dto/ExamQueryDTO.javapackagecom.yj.system.domain.exam.dto;importcom.yj.common.core.domain.PageQueryDTO;publicclassExamQueryDTOextendsPageQueryDTO{/** * 竞赛标题 */privateStringtitle;/** * 竞赛开始时间 */privateStringstartTime;/** * 竞赛结束时间 */privateStringendTime;}五、serviceoj-modules/oj-system/src/main/java/com/yj/system/service/exam/IExamService.java定义接口类packagecom.yj.system.service.exam;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.domain.exam.vo.ExamVO;importjava.util.List;publicinterfaceIExamService{ListExamVOlist(ExamQueryDTOexamQueryDTO);}oj-modules/oj-system/src/main/java/com/yj/system/service/exam/impl/ExamServiceImpl.java实现接口类packagecom.yj.system.service.exam.impl;importcom.github.pagehelper.PageHelper;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.domain.exam.vo.ExamVO;importcom.yj.system.mapper.exam.ExamMapper;importcom.yj.system.service.exam.IExamService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.List;ServicepublicclassExamServiceImplimplementsIExamService{AutowiredprivateExamMapperexamMapper;OverridepublicListExamVOlist(ExamQueryDTOexamQueryDTO){PageHelper.startPage(examQueryDTO.getPageNum(),examQueryDTO.getPageSize());returnexamMapper.selectExamList(examQueryDTO);}}oj-modules/oj-system/src/main/java/com/yj/system/domain/exam/vo/ExamVO.java返回参数packagecom.yj.system.domain.exam.vo;importcom.fasterxml.jackson.annotation.JsonFormat;importjava.time.LocalDateTime;publicclassExamVO{privateStringtitle;/** * 是否发布 0:未发布 1:已发布 */privateIntegerstatus;JsonFormat(patternyyyy-MM-dd HH:mm:ss)privateLocalDateTimestartTime;JsonFormat(patternyyyy-MM-dd HH:mm:ss)privateLocalDateTimeendTime;privateStringcreateName;JsonFormat(patternyyyy-MM-dd HH:mm:ss)privateLocalDateTimecreateTime;}六、mappermapper方法oj-modules/oj-system/src/main/java/com/yj/system/mapper/exam/ExamMapper.javapackagecom.yj.system.mapper.exam;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.yj.system.domain.exam.ExamDO;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.domain.exam.vo.ExamVO;importorg.apache.ibatis.annotations.Mapper;importjava.util.List;MapperpublicinterfaceExamMapperextendsBaseMapperExamDO{ListExamVOselectExamList(ExamQueryDTOexamQueryDTO);}自定义xml:oj-modules/oj-system/src/main/resources/mapper/question/ExamMapper.xml?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.yj.system.mapper.exam.ExamMapper!-- 竞赛列表查询 --selectidselectExamListresultTypecom.yj.system.domain.exam.vo.ExamVOSELECT te.exam_id, te.title, te.start_time, te.end_time, te.status, ts.nick_name AS create_name, te.create_time FROM tb_exam te LEFT JOIN tb_sys_user ts ON te.create_by ts.user_idwhereiftesttitle ! null and title ! AND te.title LIKE CONCAT(%,#{title},%)/ififteststartTime ! null and startTime ! AND te.start_time #{startTime}/ififtestendTime ! null and endTime ! AND te.end_timelt; #{endTime}/if/whereORDER BY te.create_time DESC/select/mapper

相关新闻

基于YOLOv26的绝缘子缺陷检测系统:从数据到部署全流程实践

基于YOLOv26的绝缘子缺陷检测系统:从数据到部署全流程实践

电力绝缘子缺陷检测这几年在巡检圈子里真的是绕不开的话题,输电线路上的绝缘子数量大、分布广,尤其是山区和林区的杆塔,人工巡检一趟成本极高,而且很多缺陷在肉眼看来并不明显。我这次要分享的,是同事前段时间做的一个…

2026/10/19 6:55:02 阅读更多 →
计算机考研复试第30天:补齐基础概念、机试手感与面试表达

计算机考研复试第30天:补齐基础概念、机试手感与面试表达

1. 第30天的“补”,到底该补什么计算机复试准备到第30天,其实已经到了一个很微妙的阶段:初试那种“天天背、天天刷题”的节奏早就失效了,而复试又不像初试那样有一条一眼能看到头的复习主线。我把这一天的笔记标成“补”&#xff…

2026/10/19 6:54:02 阅读更多 →
数据库内核实践:实现LRU缓冲池与并发控制全复盘

数据库内核实践:实现LRU缓冲池与并发控制全复盘

某高校软件学院数据库系统实验四,终于在我把一个周末加两晚搭进去之后提交了。这轮实验和前面三次完全不是一个画风:前几轮还在调SQL、画ER图、写存储过程,到了第四次,需求文档里明明白白写着「实现一个支持LRU置换与并发访问的缓…

2026/10/19 6:54:02 阅读更多 →

最新新闻

AI原生开发平台架构规划与落地实操指南

AI原生开发平台架构规划与落地实操指南

做技术交流的时候,被问得最多的一个问题,差不多就是标题这句:AI原生开发平台到底是什么、架构怎么规划、怎么落地。说实话,每次回答完我都觉得还有话没说完,因为这三个问题其实是层层递进的——概念不清就谈不上规划&a…

2026/10/19 7:38:21 阅读更多 →
diagram-design:从草图到可维护图示系统的设计方法论

diagram-design:从草图到可维护图示系统的设计方法论

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到“diagram-design”这个词,很多人会以为它只是“画图工具”的另一个说法。但真正在项目里摸爬滚打过的人都知道,图这件事从来不是“画出来”那么简单。它背后牵扯的是信…

2026/10/19 7:38:21 阅读更多 →
MCP 三种传输方式全解析:stdio、SSE、Streamable HTTP 选型实战

MCP 三种传输方式全解析:stdio、SSE、Streamable HTTP 选型实战

聊 MCP 的三种传输方式之前,先承认一件事:大多数人在看 MCP 文档的时候,最容易卡住的就是传输层这一节。stdio、SSE、Streamable HTTP 三个词单独拎出来都认识,合在一起却不知道它们为什么同时存在、各自解决什么问题。这不怪你&a…

2026/10/19 7:38:21 阅读更多 →
AI论文降重指令实战:6类提示词破解查重与AIGC检测

AI论文降重指令实战:6类提示词破解查重与AIGC检测

2025年的毕业季明显比前几年多了一道坎:不只是查重率,还多了AI检测。我身边好几个准备答辩的朋友,论文初稿写得很顺,结果一查重,标红一片;好不容易把重复率压下来了,送审前又被提醒“部分段落机…

2026/10/19 7:38:21 阅读更多 →
rea模块开发指南:从命名解析到高复用架构设计与性能优化

rea模块开发指南:从命名解析到高复用架构设计与性能优化

1. 从“rea”这个标题说起:一个被低估的通用缩写第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率又是一个被缩写玩坏了的项目名。在技术圈混久了你会发现,越是短到只有三个字母的标题,背后藏的东西往往越…

2026/10/19 7:38:21 阅读更多 →
diagram-design:从设计令牌到语义化图表的系统化设计方法

diagram-design:从设计令牌到语义化图表的系统化设计方法

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到 “diagram-design” 这个词,很多人会以为它只是“画图工具”的另一个说法。但真正在项目里被图表折磨过的人知道,问题从来不是“画不出来”,而是“画得乱、…

2026/10/19 7:37:20 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →