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/JianshenkechengEntity.java

282 lines
10 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.

// 包声明实体类包存放所有与数据库表映射的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<T> 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") +
"}";
}
}