From 1735a3d5d2e13d8ac8f20ecdb1f90c6d07af2bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E6=B3=BD=E6=97=BA?= <2413898818@qq.com> Date: Thu, 12 Dec 2024 20:10:13 +0800 Subject: [PATCH] Default Changelist --- .../src/main/java/lsgwr/exam/entity/Exam.java | 49 +++++++++++-------- .../java/lsgwr/exam/entity/ExamRecord.java | 24 ++++----- .../lsgwr/exam/entity/ExamRecordLevel.java | 17 ++++--- 3 files changed, 51 insertions(+), 39 deletions(-) diff --git a/backend/src/main/java/lsgwr/exam/entity/Exam.java b/backend/src/main/java/lsgwr/exam/entity/Exam.java index 5223eb2..4f074bc 100644 --- a/backend/src/main/java/lsgwr/exam/entity/Exam.java +++ b/backend/src/main/java/lsgwr/exam/entity/Exam.java @@ -4,51 +4,60 @@ * @date : 2019/5/14 07:42 * @email : liangshanguang2@gmail.com ***********************************************************/ - +// 定义包名,用于组织类文件,避免命名冲突 package lsgwr.exam.entity; - +// 导入Jackson库的JsonFormat注解,用于JSON序列化时自定义日期格式 import com.fasterxml.jackson.annotation.JsonFormat; +// 导入Lombok库的Data注解,用于自动生成getter、setter、equals、hashCode和toString方法 import lombok.Data; +// 导入Hibernate的DynamicUpdate注解,用于在实体更新时只更新发生变化的字段 import org.hibernate.annotations.DynamicUpdate; - +// 导入JPA的Entity注解,用于声明该类是一个JPA实体类 import javax.persistence.Entity; +// 导入JPA的Id注解,用于声明该类中的某个字段作为主键 import javax.persistence.Id; +// 导入Java的Date类,用于表示日期和时间 import java.util.Date; @Entity @Data @DynamicUpdate public class Exam { + // 使用JPA的@Id注解声明该字段为主键 @Id - private String examId; - private String examName; - private String examAvatar; - private String examDescription; - private String examQuestionIds; - private String examQuestionIdsRadio; - private String examQuestionIdsCheck; - private String examQuestionIdsJudge; - private Integer examScore; - private Integer examScoreRadio; - private Integer examScoreCheck; - private Integer examScoreJudge; - private String examCreatorId; - private Integer examTimeLimit; + private String examId;// 考试ID,唯一标识一场考试 + private String examName;// 考试名称 + private String examAvatar; // 考试头像或图标 + private String examDescription;// 考试描述或简介 + private String examQuestionIds;// 存储所有问题ID的字符串,可能是逗号分隔的ID列表 + private String examQuestionIdsRadio;// 存储所有单选题ID的字符串 + private String examQuestionIdsCheck;// 存储所有多选题ID的字符串 + private String examQuestionIdsJudge;// 存储所有判断题ID的字符串 + private Integer examScore;// 考试总分 + private Integer examScoreRadio;// 单选题总分 + private Integer examScoreCheck;// 多选题总分 + private Integer examScoreJudge;// 判断题总分 + private String examCreatorId;// 创建者ID,标识谁创建了这场考试 + private Integer examTimeLimit;// 考试时间限制,单位可能是分钟 + // 考试开始时间,使用Jackson的@JsonFormat注解自定义日期格式 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date examStartDate; + // 考试结束时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date examEndDate; /** - * 创建时间, 设计表时设置了自动插入当前时间,无需在Java代码中设置了 + * 创建时间,设计数据库表时设置了自动插入当前时间,因此在Java代码中无需手动设置。 + * 使用Jackson的@JsonFormat注解自定义日期格式以便于前端展示。 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; /** - * 更新时间,设计表时设置了自动插入当前时间,无需在Java代码中设置了。 - * 同时@DynamicUpdate注解可以时间当数据库数据变化时自动更新,无需人工维护 + * 更新时间,设计数据库表时也设置了自动插入当前时间(或更新为当前时间),在Java代码中无需手动维护。 + * 同时,由于使用了Hibernate的@DynamicUpdate注解,当数据库中的实体数据发生变化时,该字段会自动更新为当前时间。 + * 使用Jackson的@JsonFormat注解自定义日期格式以便于前端展示。 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; diff --git a/backend/src/main/java/lsgwr/exam/entity/ExamRecord.java b/backend/src/main/java/lsgwr/exam/entity/ExamRecord.java index d4e45e1..b9522f2 100644 --- a/backend/src/main/java/lsgwr/exam/entity/ExamRecord.java +++ b/backend/src/main/java/lsgwr/exam/entity/ExamRecord.java @@ -7,42 +7,44 @@ package lsgwr.exam.entity; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat;// 引入Jackson库用于日期格式化的注解 +import lombok.Data;// 引入Lombok库用于简化Java实体类的编写,如自动生成getter和setter方法 -import javax.persistence.Entity; +import javax.persistence.Entity;// 引入JPA注解,用于标识这是一个实体类,并映射到数据库中的一张表 +// 引入JPA注解,用于标识实体类的主键字段 import javax.persistence.Id; import java.util.Date; - +// 使用@Data注解自动生成getter和setter方法,以及toString、equals和hashCode方法 @Data +// 使用@Entity注解标识这是一个JPA实体类 @Entity public class ExamRecord { /** - * 主键 + * 主键,用于唯一标识一条考试记录 */ @Id private String examRecordId; /** - * 参与的考试的id + * 关联的考试ID,用于标识考生参加的是哪一场考试 */ private String examId; /** - * 考生作答地每个题目的选项(题目和题目之间用_分隔,题目有多个选项地话用-分隔),用于查看考试详情 + * 考生作答的每个题目的选项,题目之间用下划线_分隔,若题目有多个选项则用短横线-分隔。这个字段用于查看考试详情时展示考生作答情况。 */ private String answerOptionIds; /** - * 参与者,即user的id + * 参与考试的考生ID,即用户的ID */ private String examJoinerId; /** - * 参加考试的日期 + * 参加考试的日期和时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date examJoinDate; /** - * 考试耗时(秒) + * 考试耗时,单位为秒 */ private Integer examTimeCost; /** @@ -50,7 +52,7 @@ public class ExamRecord { */ private Integer examJoinScore; /** - * 考试得分水平 + * 考试得分水平,通常根据得分划分不同的等级,如优秀、良好、及格等(具体等级需另建表定义) */ private Integer examResultLevel; } \ No newline at end of file diff --git a/backend/src/main/java/lsgwr/exam/entity/ExamRecordLevel.java b/backend/src/main/java/lsgwr/exam/entity/ExamRecordLevel.java index ede7ef2..f1285f0 100644 --- a/backend/src/main/java/lsgwr/exam/entity/ExamRecordLevel.java +++ b/backend/src/main/java/lsgwr/exam/entity/ExamRecordLevel.java @@ -7,21 +7,22 @@ package lsgwr.exam.entity; -import lombok.Data; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; +import lombok.Data;// 引入Lombok库中的@Data注解,用于自动生成getter、setter、toString、equals和hashCode方法 +import javax.persistence.Entity;// 引入JPA(Java Persistence API)中的@Entity注解,标识这是一个实体类,与数据库中的表相对应 +import javax.persistence.GeneratedValue;// 引入JPA中的@GeneratedValue注解,用于指定主键的生成策略,这里未明确指定策略,将使用默认策略 +import javax.persistence.Id;// 引入JPA中的@Id注解,标识实体类的主键字段 +// 使用@Data注解自动生成getter、setter等方法 @Data +// 使用@Entity注解标识这是一个JPA实体类 @Entity public class ExamRecordLevel { - // 考试记录等级ID + // 考试记录等级的ID,是主键,通过@Id注解标识,并通过@GeneratedValue注解指定主键生成策略 @Id @GeneratedValue private Integer examRecordLevelId; - // 考试记录等级名称 + // 考试记录等级的名称,用于标识等级,如“优秀”、“良好”等 private String examRecordLevelName; - // 考试记录等级描述 + // 考试记录等级的描述,用于对等级进行更详细的说明 private String examRecordLevelDescription; } \ No newline at end of file