基于Spring Boot构建综合档案管理系统科技版实战
一、开发环境与基础工具准备
在开始构建综合档案管理系统科技版之前,必须确保本地开发环境配置准确。本系统采用后端Spring Boot + 前端Vue3的经典分离架构,数据库选用MySQL 8.0。
1.1 必须安装的基础软件
请严格按照以下版本安装,避免版本不兼容导致的启动失败报错:
- JDK 17:后端运行基础环境。下载后配置JAVA_HOME环境变量。
- Maven 3.8+:项目依赖管理工具。修改settings.xml配置阿里云镜像源以加速依赖下载。
- Node.js 16+:前端运行环境。
- MySQL 8.0:数据存储服务。
- IntelliJ IDEA:推荐使用的集成开发环境。
1.2 数据库初始化脚本
直接在MySQL客户端执行以下SQL,完成数据库与表的创建。这里设计了核心的档案表与分类表。
```sql CREATE DATABASE IF NOT EXISTS archive_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE archive_system; -- 档案分类表 CREATE TABLE `archive_category` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `category_name` varchar(100) NOT NULL COMMENT '分类名称', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案分类表'; -- 档案主表 CREATE TABLE `archive_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `archive_no` varchar(50) NOT NULL COMMENT '档案编号', `title` varchar(200) NOT NULL COMMENT '档案标题', `category_id` bigint(20) NOT NULL COMMENT '所属分类ID', `file_path` varchar(500) DEFAULT NULL COMMENT '文件存储路径', `status` tinyint(1) DEFAULT '1' COMMENT '状态 1:正常 0:归档', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_archive_no` (`archive_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案信息主表'; -- 插入初始分类数据 INSERT INTO `archive_category` (`category_name`) VALUES ('科技文档'), ('人事档案'), ('财务凭证'); ```二、后端项目搭建与核心代码实现
使用Spring Initializr创建项目,GroupId设为com.tech,ArtifactId设为archive-system。选中Spring Web、MyBatis Framework、MySQL Driver、Lombok依赖。
2.1 完整POM依赖配置
为了简化开发,引入MyBatis-Plus作为ORM框架。请将以下依赖覆盖原有的pom.xml文件内容:
```xml2.2 数据库连接配置
在src/main/resources/application.yml中配置数据库连接信息,注意修改password为你本地的MySQL密码:
```yaml server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/archive_system?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0 ```2.3 实体类与Mapper层
创建entity包,编写档案信息实体类。使用Lombok注解简化Getter/Setter:
```java package com.tech.archive.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.time.LocalDateTime; @Data public class ArchiveInfo { @TableId(type = IdType.AUTO) private Long id; private String archiveNo; private String title; private Long categoryId; private String filePath; private Integer status; private LocalDateTime createTime; } ```创建mapper包,定义Mapper接口,继承BaseMapper即可获得基础CRUD功能:
```java package com.tech.archive.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.tech.archive.entity.ArchiveInfo; import org.apache.ibatis.annotations.Mapper; @Mapper public interface ArchiveInfoMapper extends BaseMapper2.4 业务层与控制层实现
创建service包,编写Service接口与实现类。这里实现一个简单的分页查询列表和新增档案的逻辑:
```java package com.tech.archive.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tech.archive.entity.ArchiveInfo; public interface ArchiveService { Page
创建controller包,编写对外暴露的REST接口。注意设置跨域,否则前端无法调用:
```java package com.tech.archive.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tech.archive.entity.ArchiveInfo; import com.tech.archive.service.ArchiveService; import org.springframework.web.bind.annotation.; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/archive") @CrossOrigin(origins = "") // 允许所有来源跨域 public class ArchiveController { @Resource private ArchiveService archiveService; @GetMapping("/list") public Map三、前端页面开发与接口对接
在项目根目录创建frontend文件夹,进入文件夹执行命令初始化Vue3项目:npm init vue@latest。安装Element Plus组件库和Axios请求库:npm install element-plus axios。
3.1 Axios请求封装
在src/utils下创建request.js,配置基础URL和拦截器:
```javascript import axios from 'axios' const request = axios.create({ baseURL: 'http://localhost:8080', timeout: 5000 }) // 请求拦截器 request.interceptors.request.use(config => { return config }, error => { return Promise.reject(error) }) // 响应拦截器 request.interceptors.response.use(response => { return response.data }, error => { return Promise.reject(error) }) export default request ```3.2 档案列表页面开发
修改src/App.vue,直接编写列表展示与新增弹窗的完整逻辑。这是一个包含表格、分页、弹窗表单的单页面应用:
```html综合档案管理系统科技版
3.3 引入Element Plus样式
在src/main.js中全局引入Element Plus样式,否则界面会乱码:
```javascript import { createApp } from 'vue' import App from './App.vue' 'element-plus/dist/index.css' createApp(App).mount('app') ```四、系统启动与功能验证
代码编写完毕,现在启动前后端服务进行验证。
4.1 启动后端服务
在IDEA中找到ArchiveApplication.java(包含main方法的类),右键点击运行。观察控制台日志,看到Started ArchiveApplication in 2.345 seconds字样即表示启动成功,端口监听在8080。
4.2 启动前端服务
打开终端,进入frontend目录,执行运行命令:
```bash npm run dev ```终端会输出Local访问地址,通常是 http://localhost:5173。按住Ctrl键点击该链接,浏览器会自动打开系统界面。
4.3 功能实操验证
- 查看列表:页面加载后,应直接看到数据库中的初始数据(如果为空则显示空表格)。
- 新增档案:点击右上角“新增档案”按钮,弹窗出现。输入档案编号“TEST-001”,标题“测试技术文档”,分类ID选择1。点击“确认”。
- 结果确认:页面应弹出“新增成功”提示,且表格中立即刷新出刚才录入的数据。此时查看MySQL数据库,archive_info表中也会同步增加这条记录。