// 包声明:实体类包,存放所有与数据库表映射的JavaBean对象 package com.entity; // 字段描述注解:自定义数据库字段元数据 import com.annotation.ColumnInfo; // 数据校验注解:提供非空、范围等验证规则 import javax.validation.constraints.*; // JSON序列化配置:忽略未定义属性 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; // 反射异常类:处理属性拷贝时的异常 import java.lang.reflect.InvocationTargetException; // 序列化接口标识 import java.io.Serializable; // 集合工具类 import java.util.*; // Apache Ant日期工具(代码中未使用,建议移除) import org.apache.tools.ant.util.DateUtils; // Spring日期参数绑定注解 import org.springframework.format.annotation.DateTimeFormat; // Jackson日期格式化注解 import com.fasterxml.jackson.annotation.JsonFormat; // 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; // 健身课程实体 //映射数据库表 jianshenkecheng //存储健身课程基本信息、统计数据和关联信息 @TableName("jianshenkecheng") // 指定关联数据库表名 public class JianshenkechengEntity implements Serializable { // 序列化版本标识(类版本控制) private static final long serialVersionUID = 1L; // 空构造器(持久层框架需要) public JianshenkechengEntity() { } // 泛型构造器:通过反射进行属性拷贝 public JianshenkechengEntity(T t) { try { BeanUtils.copyProperties(this, t); // 使用Apache工具类拷贝属性 } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); // 生产环境建议改为日志记录 } } // 主键字段(自增策略) @TableId(type = IdType.AUTO) // 主键生成策略:数据库自增 @ColumnInfo(comment="主键",type="int(11)") // 字段注释:主键,数据库类型int(11) @TableField("id") // 映射数据库字段名(可省略) private Integer id; // 关联教练ID(外键) @ColumnInfo(comment="教练",type="int(11)") // 关联jiaolian表主键 @TableField("jiaolian_id") private Integer jiaolianId; // 课程名称(需考虑唯一性约束) @ColumnInfo(comment="健身课程名称",type="varchar(200)") // 数据库类型varchar(200) @TableField("jianshenkecheng_name") private String jianshenkechengName; // 课程封面图URL(建议添加OSS存储注释) @ColumnInfo(comment="健身课程照片",type="varchar(200)") // 存储图片路径 @TableField("jianshenkecheng_photo") private String jianshenkechengPhoto; // 课程视频地址(建议标注支持的格式) @ColumnInfo(comment="课程视频",type="varchar(200)") // 存储视频文件路径或URL @TableField("jianshenkecheng_video") private String jianshenkechengVideo; // 点赞计数器(建议添加并发控制) @ColumnInfo(comment="赞",type="int(11)") // 默认值建议设置为0 @TableField("zan_number") private Integer zanNumber; // 点踩计数器(考虑是否需要负值限制) @ColumnInfo(comment="踩",type="int(11)") @TableField("cai_number") private Integer caiNumber; // 课程分类(应关联字典表或使用枚举类) @ColumnInfo(comment="健身课程类型",type="int(11)") // 例:1-有氧 2-力量 3-柔韧 @TableField("jianshenkecheng_types") private Integer jianshenkechengTypes; // 点击量统计(可考虑每日统计优化) @ColumnInfo(comment="健身课程热度",type="int(11)") // 记录课程查看次数 @TableField("jianshenkecheng_clicknum") private Integer jianshenkechengClicknum; // 富文本课程介绍(需考虑XSS防护) @ColumnInfo(comment="健身课程介绍",type="longtext") // 存储HTML格式内容 @TableField("jianshenkecheng_content") private String jianshenkechengContent; // 逻辑删除标志(0-未删除 1-已删除) @ColumnInfo(comment="逻辑删除",type="int(11)") // 替代物理删除 @TableField("data_delete") private Integer dataDelete; // 数据录入时间(管理后台操作时间) @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") // 数据库类型timestamp @TableField(value = "insert_time", fill = FieldFill.INSERT) // 新增时自动填充 private Date insertTime; // 课程创建时间(业务时间,可能与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") // 建议确认与insert_time的区别 @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; // ----------------------------- Getter/Setter方法 ----------------------------- // 主键访问器 public Integer getId() { return id; } // 主键修改器 public void setId(Integer id) { this.id = id; } // 教练ID访问器 public Integer getJiaolianId() { return jiaolianId; } // 教练ID修改器(应校验教练存在性) public void setJiaolianId(Integer jiaolianId) { this.jiaolianId = jiaolianId; } // 课程名称访问器 public String getJianshenkechengName() { return jianshenkechengName; } // 课程名称修改器(建议添加唯一性校验) public void setJianshenkechengName(String jianshenkechengName) { this.jianshenkechengName = jianshenkechengName; } // 课程图片访问器 public String getJianshenkechengPhoto() { return jianshenkechengPhoto; } // 课程图片修改器(建议添加格式校验) public void setJianshenkechengPhoto(String jianshenkechengPhoto) { this.jianshenkechengPhoto = jianshenkechengPhoto; } // 课程视频访问器 public String getJianshenkechengVideo() { return jianshenkechengVideo; } // 课程视频修改器(建议添加视频格式校验) public void setJianshenkechengVideo(String jianshenkechengVideo) { this.jianshenkechengVideo = jianshenkechengVideo; } // 点赞数访问器 public Integer getZanNumber() { return zanNumber; } // 点赞数修改器(建议添加非负校验) public void setZanNumber(Integer zanNumber) { this.zanNumber = zanNumber; } // 点踩数访问器 public Integer getCaiNumber() { return caiNumber; } // 点踩数修改器(建议添加非负校验) public void setCaiNumber(Integer caiNumber) { this.caiNumber = caiNumber; } // 课程类型访问器 public Integer getJianshenkechengTypes() { return jianshenkechengTypes; } // 课程类型修改器(应限制有效值范围) public void setJianshenkechengTypes(Integer jianshenkechengTypes) { this.jianshenkechengTypes = jianshenkechengTypes; } // 点击量访问器 public Integer getJianshenkechengClicknum() { return jianshenkechengClicknum; } // 点击量修改器(建议只允许递增) public void setJianshenkechengClicknum(Integer jianshenkechengClicknum) { this.jianshenkechengClicknum = jianshenkechengClicknum; } // 课程详情访问器 public String getJianshenkechengContent() { return jianshenkechengContent; } // 课程详情修改器(建议添加HTML过滤) public void setJianshenkechengContent(String jianshenkechengContent) { this.jianshenkechengContent = jianshenkechengContent; } // 逻辑删除标志访问器 public Integer getDataDelete() { return dataDelete; } // 逻辑删除标志修改器(应限制0/1取值) public void setDataDelete(Integer dataDelete) { this.dataDelete = dataDelete; } // 录入时间访问器(通常自动生成) public Date getInsertTime() { return insertTime; } // 录入时间修改器(通常无需手动设置) public void setInsertTime(Date insertTime) { this.insertTime = insertTime; } // 创建时间访问器(注意与insert_time区别) public Date getCreateTime() { return createTime; } // 创建时间修改器(需确认业务场景) public void setCreateTime(Date createTime) { this.createTime = createTime; } // 对象字符串表示(调试用) @Override public String toString() { return "Jianshenkecheng{" + ", id=" + id + ", jiaolianId=" + jiaolianId + ", jianshenkechengName=" + jianshenkechengName + ", jianshenkechengPhoto=" + jianshenkechengPhoto + ", jianshenkechengVideo=" + jianshenkechengVideo + ", zanNumber=" + zanNumber + ", caiNumber=" + caiNumber + ", jianshenkechengTypes=" + jianshenkechengTypes + ", jianshenkechengClicknum=" + jianshenkechengClicknum + ", jianshenkechengContent=" + jianshenkechengContent + ", dataDelete=" + dataDelete + ", insertTime=" + DateUtil.convertString(insertTime,"yyyy-MM-dd") + // 格式化丢失时间精度 ", createTime=" + DateUtil.convertString(createTime,"yyyy-MM-dd") + "}"; } }