Skip to content

实体管理

实体类遵循 MyBatis Plus 的书写规范,在对应系统或插件的 entity 目录下。实体类是项目数据层的基础,良好的实体类设计有助于提高代码的可读性、可维护性和性能

文件位置

实体类基础结构

实体类是数据库表在 Java 中的映射,用于封装数据库表的结构和数据。在本项目中,实体类遵循以下基本结构:

java
package com.niu.core.entity.shop;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
* 店铺扩展表实体
*/
@Data
public class SiteShop implements Serializable {

    private static final long serialVersionUID = 1L;
    
    // 字段定义
    // ...
}

核心注解使用

@Data(Lombok)

用于自动生成 getter、setter、toString、equals 和 hashCode 方法,简化代码

java
@Data
public class SiteShop implements Serializable {
    // ...
}

@TableId(MyBatis Plus)

用于指定实体类的主键字段,支持自定义主键名称和生成策略

java
/** 主键 */
@TableId(value="id", type= IdType.AUTO)
private Integer id;

/** 分类id */
@TableId(value="category_id", type= IdType.AUTO)
private Integer categoryId;

/** 系统用户ID */
@TableId(value="uid", type= IdType.AUTO)
private Integer uid;

@TableField(MyBatis Plus)

用于指定实体类字段与数据库字段的映射关系,当字段名与数据库列名不一致时使用

java
@TableField(value = "desc")
private String desc;

@TableLogic(MyBatis Plus)

用于逻辑删除功能,标注在删除字段上

java
@TableLogic
private Integer isDelete;

字段定义规范

命名规则

  • 采用 camelCase 命名法(驼峰命名)

  • 字段名与数据库字段名对应(通过 MyBatis Plus 自动映射)

  • 避免使用 Java 关键字

  • 使用有意义的字段名,避免缩写

示例:

java
private String alipayAccountNo;  // 支付宝账号
private String bankAccountName;  // 提现账号对应姓名
private Integer businessStatus;  // 营业状态
private Integer categoryId;      // 商家分类id

数据类型选择

数据库类型Java类型使用场景
INT/BIGINTInteger/Long整数类型(如 ID、数量、状态等)
VARCHAR/TEXTString字符串类型(如名称、描述、地址等)
DECIMALBigDecimal金额、价格等需要精确计算的数值
DATETIME/TIMESTAMPLong时间戳(毫秒)
BOOLEANInteger布尔值(1表示是,0表示否)

示例:

java
private Integer categoryId;          // 整数类型
private String categoryName;         // 字符串类型
private BigDecimal commissionRate;   // 金额类型
private Long createTime;             // 时间戳
private Integer isRecommend;         // 布尔值(0/1)

状态字段处理

使用 Integer 类型表示状态,通过注释说明状态含义和取值范围。

示例:

java
/** 提现账户类型(1银行卡,2支付宝,3微信,4微信零钱) */
private Integer bankType;

/** 营业状态(1营业中,2休息中) */
private Integer businessStatus;

/** 是否推荐 */
private Integer isRecommend;

/** 是否自营 */
private Integer isSelf;

序列化处理

所有实体类都必须实现 Serializable 接口,并定义 serialVersionUID 常量,确保序列化和反序列化的兼容性。

java
public class SiteShop implements Serializable {

    private static final long serialVersionUID = 1L;
    // ...
}

基于 MIT 协议发布