Spring Boot+Vue前后端分离项目练习01之网盘项目的搭建

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

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
现有功能 + 资源管理(上传、下载、移动、修改、删除) + 资源分享 + 资源共享 + 资源转存 + 资源预览(pdf编辑、图片、视频)(office 三件套待支持) + 断点续传 + 敏感词过滤 + 流式视频播放 + 秒传支持 ## 部分界面展示 + 上传资源 ![1681026799763](https://user-images.githubusercontent.com/50403161/230761214-a032ac84-5a89-4b82-a958-2639dd365dae.jpg) + 分享资源 ![1679735946504](https://user-images.githubusercontent.com/50403161/227708656-6a4d8142-f6fc-40b0-884f-f9e36c0a6f6b.jpg) + 资源预览 - 视频预览 ![视频预览](https://user-images.githubusercontent.com/50403161/233643649-abdaa4e1-f0a2-4219-8b4c-eab403c2885a.png) - 图片预览 ![图片预览](https://user-images.githubusercontent.com/50403161/233643039-d2612446-3b3e-4792-aa36-63a60e00e3b5.png) - pdf预览 ![pdf预览](https://user-images.githubusercontent.com/50403161/233643073-ef11c03e-5dba-42ce-927f-032af0277ef0.png) ## 待完成 - 视频文件转码进度展示 - 订阅分享消息推送 - 后台管理 - 链接后台下载 - 生成分享链接二维码 - 办公套件预览支持 - 音频文件预览支持 - 使用HDFS升级存储系统 - ...... ## 更新日志 + 使用hls 流播放实现了视频在线播放 2023.3 + 视频与图片缩略图支持 2023.4.3 ## 前端地址 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

picacho_pkq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值