1.前期设计
一般看来,网盘系统主要实体包括:用户、存储信息、用户文件、文件、回收文件等基本功能点。
各实体对应的表结构如下所示:
表名:user(用户表)
| 字段名 | 属性 | 说明 |
|---|---|---|
| userId | bigint | 主键 |
| username | varchar | 用户名 |
| password | varchar | 密码 |
| telephone | varchar | 手机号 |
| salt | varchar | 盐值 |
| registerTime | varchar | 注册时间 |
表名:userfile (用户文件表)
| 字段名 | 属性 | 说明 |
|---|---|---|
| userFileId | bigint | 用户文件 id |
| userId | bigint | 用户 id |
| fileId | bigint | 文件 id |
| fileName | varchar | 文件名 |
| filePath | varchar | 文件路径 |
| extendName | varchar | 扩展名 |
| isDir | int | 是否时目录 |
| uploadTime | varchar | 上传时间 |
| deleteFlag | int | 删除标志 |
| deleteTime | varchar | 删除时间 |
| deleteBatchNum | varchar | 删除批次号 |
表名:file (文件表)
| 字段名 | 属性 | 说明 |
|---|---|---|
| fileId | bigint | 文件 id |
| timeStampName | varchar | 时间戳名 |
| fileUrl | varchar | 文件 url |
| fileSize | bigint | 文件大小 |
| storageType | int | 存储类型 |
| identifier | varchar | md5 唯一标识 |
| pointCount | int | 引用数量 |
表名:storage (存储信息表)
| 字段名 | 属性 | 说明 |
|---|---|---|
| storageId | bigint | 存储信息 id |
| userId | bigint | 用户 id |
| storageSize | bigint | 存储大小 |
表名:recoveryfile (回收文件表)
| 字段名 | 属性 | 说明 |
|---|---|---|
| recoveryFileId | bigint | 回收文件 id |
| userFileId | bigint | 用户文件 id |
| deleteTime | varchar | 删除时间 |
| deleteBatchNum | varchar | 删除批次号 |
2.创建项目
2.1 文件与用户
网盘系统主要功能就是对文件进行管理,因此这里就需要对网盘文件进行分类。
- 文件分为普通文件和目录文件。
- 普通文件是真实存在的,保存在磁盘上,因此它具有真实的文件路径和大小。
- 目录文件是虚拟的,它存在的目的是对普通文件进行分类归档。
在一个网盘系统中,首先实现用户登录,登录的用户就可以对文件进行管理,最主要的功能为:
- 文件的上传,删除,修改文件名,文件列表展示。
- 文件的移动,文件的复制等。
在一个网盘系统,一个用户可以拥有多个文件,一个文件被多个用户所拥有。
2.2 JPA建表
JPA(Java Persistence API),中文名 Java 持久层 API,是 Java 持久化规范,这里可以使用这个工具,建立一个 Java 数据模型与数据库表结构之间的一种关系,并将 Java 的数据模型映射到数据库并建立数据库表结构。
2.2.1 添加依赖
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.shiyanlou.file</groupId>
<artifactId>qiwen-file</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
2.2.2 添加配置文件
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/springboot-file
spring.datasource.username=root
spring.datasource.password=12345678
# 配置日志保存路径
logging.file.name=/Users/xuzhi/java-projects/java-WangPan/log
# 配置日志级别
logging.level.root=info
#jpa 配置
spring.jpa.pro

文章描述了一个网盘系统的前期设计和创建过程,包括用户、文件、存储信息等实体的表结构设计。接着,通过JPA建立Java数据模型与数据库表结构的关系,实现文件上传、删除等基本功能。然后,文章介绍了如何整合MyBatis和MyBatisPlus进行持久层操作,包括配置、创建mapper接口和xml文件,以及进行测试。最后,文章提到了统一返回结果的封装和全局异常处理,确保系统稳定性和用户体验。
最低0.47元/天 解锁文章
677

被折叠的 条评论
为什么被折叠?



