1. 项目背景与意义
民间艺术是中华优秀传统文化的重要组成部分,承载着深厚的历史记忆与地域特色。然而,随着现代化进程加快,许多民间艺术面临传承人老龄化、技艺记录缺失、传播渠道狭窄等现实困境。传统的手工记录与口口相传方式,难以系统化保存和推广这些珍贵的文化遗产。
基于SpringBoot的民间艺术传承管理系统,旨在通过信息化手段解决上述问题。系统以数字化方式对民间艺术项目、传承人、技艺资料、活动记录等进行统一管理,帮助文化管理部门、非遗保护机构以及艺术爱好者更高效地开展记录、展示、传承与推广工作。其意义主要体现在以下几个方面:
- 数字化保护:将分散的民间艺术资料集中存储,形成可长期保存的数字档案,降低遗失风险。
- 传承人管理:建立传承人信息库,记录其技艺特点、传承谱系与活动轨迹,为扶持政策提供数据支撑。
- 传播推广:通过系统平台展示民间艺术成果,扩大社会影响力,吸引更多年轻人关注和参与。
- 管理提效:替代传统纸质台账,实现申报、审核、统计等流程的线上化,提升工作效率。
2. 系统技术栈
本系统采用前后端分离架构,后端基于SpringBoot框架构建,前端使用Vue.js配合Element UI组件库,数据库选用MySQL,整体技术选型成熟稳定、生态完善,适合中小型管理系统的快速开发与部署。
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 2.x | 简化配置,快速构建RESTful API |
| 持久层 | MyBatis-Plus | 通用Mapper与分页插件,提升开发效率 |
| 数据库 | MySQL 8.0 | 存储业务数据,支持事务与索引优化 |
| 安全认证 | Spring Security + JWT | 实现登录鉴权与接口权限控制 |
| 前端框架 | Vue.js 2.x + Element UI | 组件化开发,交互友好 |
| 构建工具 | Maven | 依赖管理与项目构建 |
| 接口文档 | Swagger 2 | 自动生成在线接口文档,便于联调 |
3. 系统功能模块设计
系统围绕民间艺术传承的核心业务,划分为以下主要功能模块:
- 用户管理模块:管理员、普通用户、传承人等多角色管理,支持账号注册、登录与权限分配。
- 艺术项目管理模块:对民间艺术项目进行录入、分类、查询与编辑,支持图片、视频等多媒体资料上传。
- 传承人管理模块:记录传承人基本信息、技艺专长、传承谱系、荣誉资质等。
- 活动管理模块:发布展览、演出、培训等传承活动信息,支持在线报名与活动回顾。
- 资讯公告模块:发布政策法规、行业动态、保护成果等资讯内容。
- 数据统计模块:按地区、类别、时间等维度统计艺术项目与传承人分布情况,辅助决策分析。
4. 数据库设计
数据库设计遵循第三范式,核心表包括用户表、艺术项目表、传承人表、活动表等。以下为艺术项目表与传承人表的核心字段设计。
-- 艺术项目表 CREATE TABLE art_project ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', project_name VARCHAR(100) NOT NULL COMMENT '项目名称', category VARCHAR(50) COMMENT '艺术类别', region VARCHAR(100) COMMENT '所属地区', description TEXT COMMENT '项目简介', cover_image VARCHAR(255) COMMENT '封面图片地址', status TINYINT DEFAULT 1 COMMENT '状态:0下架 1上架', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) COMMENT '民间艺术项目表'; -- 传承人表 CREATE TABLE inheritor ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', name VARCHAR(50) NOT NULL COMMENT '姓名', gender TINYINT COMMENT '性别:0女 1男', birth_date DATE COMMENT '出生日期', art_project_id BIGINT COMMENT '关联艺术项目ID', skill_desc TEXT COMMENT '技艺特点描述', lineage TEXT COMMENT '传承谱系', phone VARCHAR(20) COMMENT '联系电话', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ) COMMENT '传承人信息表';5. 核心代码实现
5.1 项目实体类
以艺术项目实体为例,使用MyBatis-Plus注解简化数据库映射。
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("art_project") public class ArtProject { @TableId(type = IdType.AUTO) private Long id; private String projectName; private String category; private String region; private String description; private String coverImage; private Integer status; private LocalDateTime createTime; private LocalDateTime updateTime; }5.2 控制器层
控制器负责接收前端请求并返回统一格式的响应结果。
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/project") public class ArtProjectController { @Autowired private ArtProjectService artProjectService; @GetMapping("/page") public Result<Page<ArtProject>> page(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(required = false) String keyword) { LambdaQueryWrapper<ArtProject> wrapper = new LambdaQueryWrapper<>(); if (keyword != null && !keyword.isEmpty()) { wrapper.like(ArtProject::getProjectName, keyword); } wrapper.orderByDesc(ArtProject::getCreateTime); Page<ArtProject> page = artProjectService.page(new Page<>(pageNum, pageSize), wrapper); return Result.success(page); } @GetMapping("/{id}") public Result<ArtProject> getById(@PathVariable Long id) { return Result.success(artProjectService.getById(id)); } @PostMapping public Result<Boolean> save(@RequestBody ArtProject project) { return Result.success(artProjectService.save(project)); } @PutMapping public Result<Boolean> update(@RequestBody ArtProject project) { return Result.success(artProjectService.updateById(project)); } @DeleteMapping("/{id}") public Result<Boolean> delete(@PathVariable Long id) { return Result.success(artProjectService.removeById(id)); } }5.3 服务层
服务层封装业务逻辑,通过继承MyBatis-Plus的ServiceImpl简化通用CRUD操作。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service public class ArtProjectServiceImpl extends ServiceImpl<ArtProjectMapper, ArtProject> implements ArtProjectService { // 业务扩展方法可在此编写 }5.4 统一响应结果封装
定义统一的响应结果类,规范前后端数据交互格式。
import lombok.Data; @Data public class Result<T> { private Integer code; private String message; private T data; public static <T> Result<T> success(T data) { Result<T> result = new Result<>(); result.setCode(200); result.setMessage("操作成功"); result.setData(data); return result; } public static <T> Result<T> error(String message) { Result<T> result = new Result<>(); result.setCode(500); result.setMessage(message); return result; } }6. 系统部署与运行
系统采用前后端分离部署方式。后端打包为可执行JAR包,前端构建为静态资源文件,通过Nginx进行反向代理与静态资源托管。数据库初始化脚本随项目发布,首次部署时执行建库建表语句即可。
# 后端打包 mvn clean package -DskipTests 启动后端服务 java -jar art-heritage-system.jar --server.port=8080 前端构建 npm run build7. 总结与展望
基于SpringBoot的民间艺术传承管理系统,通过数字化手段为民间艺术的记录、展示与传承提供了高效的信息化平台。系统在技术选型上兼顾了开发效率与运行稳定性,功能设计贴合非遗保护的实际业务场景。未来可进一步引入人工智能技术,实现艺术资料的智能分类、语音识别记录以及传承人技艺的数字化建模,为民间艺术的活态传承注入更多科技力量。