JAVA V6 多商户商城 开发文档——JAVA服务端

entity 实体管理

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

文件位置​

实体类基础结构​

实体类是数据库表在 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 方法,简化代码

复制代码
@Data
public class SiteShop implements Serializable {
    // ...
}

@TableId(MyBatis Plus)​

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

复制代码
/** 主键 */
@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)​

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

复制代码
@TableField(value = "desc")
private String desc;

@TableLogic(MyBatis Plus)​

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

复制代码
@TableLogic
private Integer isDelete;

字段定义规范​

命名规则​

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

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

  • 避免使用 Java 关键字

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

示例:

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

数据类型选择​

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

示例:

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

状态字段处理​

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

示例:

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

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

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

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

序列化处理​

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

复制代码
public class SiteShop implements Serializable {

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

视图(Mapper)​

Mapper 是 MyBatis 的数据访问层接口,用于与数据库进行交互,遵循 MyBatis Plus 的书写规范

文件位置​

目录原则​

保持与 Entity 层的目录结构一致,这样调用时方便查找

接口定义规范​

继承关系​

Mapper 接口有两种继承方式:

  1. MPJBaseMapper :来自 mybatisplusjoin,支持连表查询功能

  2. BaseMapper :来自 MyBatis Plus,提供基础的 CRUD 功能

项目中大部分 Mapper 都继承自 MPJBaseMapper,便于后期进行复杂的连表查询操作

命名规范​

  • Mapper 接口命名:{实体类名称}Mapper

  • 包路径:com.niu.core.mapper.{功能模块}

注解使用​

@Mapper​

用于标记接口为 MyBatis 的 Mapper 接口,系统启动时会自动扫描并注入 Spring 容器

复制代码
@Mapper
public interface SysUserMapper extends MPJBaseMapper<SysUser> {
}

Mapper 实现实例​

继承 MPJBaseMapper 的 Mapper​

复制代码
package com.niu.core.mapper.sys;

import com.github.yulichang.base.MPJBaseMapper;
import com.niu.core.entity.sys.SysUser;
import org.apache.ibatis.annotations.Mapper;

/**
 * 后台管理员 Mapper
 */
@Mapper
public interface SysUserMapper extends MPJBaseMapper<SysUser> {
}

继承 BaseMapper 的 Mapper​

复制代码
package com.niu.core.mapper.sys;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.niu.core.entity.sys.SysBackupRecords;
import org.apache.ibatis.annotations.Mapper;

/**
 * 备份记录 Mapper
 */
@Mapper
public interface SysBackupRecordsMapper extends BaseMapper<SysBackupRecords> {
}

商品相关 Mapper​

复制代码
package com.niu.core.mapper.shop;

import com.github.yulichang.base.MPJBaseMapper;
import com.niu.core.entity.shop.MallGoods;
import org.apache.ibatis.annotations.Mapper;

/**
 * 商品表 Mapper
 */
@Mapper
public interface MallGoodsMapper extends MPJBaseMapper<MallGoods> {
}

调用方式​

Mapper 接口在 Service 层通过 @Resource 或 @Autowired 注解进行注入使用:

复制代码
@Service
public class SysUserServiceImpl implements ISysUserService {

    @Resource
    private SysUserMapper sysUserMapper;
    
    @Override
    public SysUser getById(Integer id) {
        return sysUserMapper.selectById(id);
    }
    
    // 其他方法...
}
相关推荐
学长毕设7 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn8 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川8 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵8 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人8 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David8 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1008 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin9 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
专注仿真9 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
霸道流氓气质10 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring