You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gym/ForumEntity.java

196 lines
6.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 包声明:实体类所在的包,用于存放所有与数据库表映射的实体类
package com.entity;
// 导入注解类,用于定义数据库字段的额外信息(如注释、类型)
import com.annotation.ColumnInfo;
// 导入数据验证相关注解,用于对字段进行校验(如非空、长度限制)
import javax.validation.constraints.*;
// 导入Jackson注解用于在JSON序列化/反序列化时忽略未知属性
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
// 反射相关异常类,用于处理属性拷贝时的异常
import java.lang.reflect.InvocationTargetException;
// 序列化接口标记
import java.io.Serializable;
// Java集合框架类
import java.util.*;
// Apache Ant日期工具类但实际未在类中使用可能需检查
import org.apache.tools.ant.util.DateUtils;
// Spring的日期格式化注解用于绑定请求参数中的日期
import org.springframework.format.annotation.DateTimeFormat;
// Jackson的日期格式化注解用于控制JSON日期格式
import com.fasterxml.jackson.annotation.JsonFormat;
// Apache Commons Bean工具类用于对象属性拷贝
import org.apache.commons.beanutils.BeanUtils;
// MyBatis Plus表字段注解
import com.baomidou.mybatisplus.annotations.TableField;
// MyBatis Plus主键注解
import com.baomidou.mybatisplus.annotations.TableId;
// MyBatis Plus表名注解
import com.baomidou.mybatisplus.annotations.TableName;
// MyBatis Plus主键生成策略枚举
import com.baomidou.mybatisplus.enums.IdType;
// MyBatis Plus字段自动填充策略枚举
import com.baomidou.mybatisplus.enums.FieldFill;
// 自定义日期工具类,用于日期格式转换
import com.utils.DateUtil;
//健身论坛实体
//对应数据库表 forum存储论坛帖子的基本信息及关联信息
//*@author
//@email
@TableName("forum") // 指定对应的数据库表名
public class ForumEntity<T> implements Serializable {
private static final long serialVersionUID = 1L; // 序列化版本UID
// 无参构造器
public ForumEntity() {
}
// 泛型构造器:通过反射将泛型对象属性拷贝到当前实体
public ForumEntity(T t) {
try {
BeanUtils.copyProperties(this, t); // 使用BeanUtils进行属性拷贝
} catch (IllegalAccessException | InvocationTargetException e) {
// 打印异常堆栈(实际生产环境建议记录日志而非直接打印)
e.printStackTrace();
}
}
// 主键
// 使用数据库自增策略
@TableId(type = IdType.AUTO) // MyBatis Plus主键注解自增类型
@ColumnInfo(comment="主键",type="int(11)") // 自定义字段注释信息
@TableField(value = "id") // 指定数据库字段名(可省略,默认属性名转换)
private Integer id;
//帖子标题
// 数据库字段类型为varchar(200)
@ColumnInfo(comment="帖子标题",type="varchar(200)")
@TableField(value = "forum_name")
private String forumName;
//关联用户ID
//对应yonghu表的主键
@ColumnInfo(comment="用户",type="int(11)")
@TableField(value = "yonghu_id")
private Integer yonghuId;
//关联教练ID
//对应jiaolian表的主键
@ColumnInfo(comment="教练",type="int(11)")
@TableField(value = "jiaolian_id")
private Integer jiaolianId;
//关联管理员ID
//对应users表的主键
@ColumnInfo(comment="管理员",type="int(11)")
@TableField(value = "users_id")
private Integer usersId;
// 帖子内容
//使用长文本类型存储
@ColumnInfo(comment="发布内容",type="longtext")
@TableField(value = "forum_content")
private String forumContent;
// 父级帖子ID
//用于实现评论层级结构0表示顶级帖子
@ColumnInfo(comment="父id",type="int(11)")
@TableField(value = "super_ids")
private Integer superIds;
//帖子状态
//使用枚举值表示如0-正常1-关闭)
@ColumnInfo(comment="帖子状态",type="int(11)")
@TableField(value = "forum_state_types")
private Integer forumStateTypes;
//发帖时间
//插入时自动填充当前时间
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") // 定义JSON序列化格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 定义请求参数绑定格式
@ColumnInfo(comment="发帖时间",type="timestamp")
@TableField(value = "insert_time",fill = FieldFill.INSERT) // 插入时自动填充
private Date insertTime;
//修改时间
// 更新时自动填充当前时间
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ColumnInfo(comment="修改时间",type="timestamp")
@TableField(value = "update_time",fill = FieldFill.UPDATE) // 更新时自动填充
private Date updateTime;
//创建时间与insert_time重复可能需要确认字段用途
// 插入时自动填充
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ColumnInfo(comment="创建时间",type="timestamp")
@TableField(value = "create_time",fill = FieldFill.INSERT) // 与insert_time重复可能需检查数据库设计
private Date createTime;
// 以下为字段的getter和setter方法
//获取主键ID
public Integer getId() {
return id;
}
//设置主键ID
public void setId(Integer id) {
this.id = id;
}
// 其他getter/setter方法类似此处省略详细注释...
// 提示实际开发中建议使用Lombok的@Data注解自动生成
@Override
public String toString() {
return "Forum{" +
", id=" + id +
", forumName=" + forumName +
", yonghuId=" + yonghuId +
", jiaolianId=" + jiaolianId +
", usersId=" + usersId +
", forumContent=" + forumContent +
", superIds=" + superIds +
", forumStateTypes=" + forumStateTypes +
", insertTime=" + DateUtil.convertString(insertTime,"yyyy-MM-dd") + // 使用自定义工具类格式化日期
", updateTime=" + DateUtil.convertString(updateTime,"yyyy-MM-dd") +
", createTime=" + DateUtil.convertString(createTime,"yyyy-MM-dd") +
"}";
}
}