1. 项目概述与背景
校园二手交易平台是解决高校学生闲置物品流转需求的典型应用场景。在高校环境中,每年毕业季和开学季都会产生大量闲置物品,包括教材、电子产品、生活用品等。传统线下交易方式存在信息不对称、交易效率低下等问题,而基于Spring Boot+Vue的前后端分离架构能够有效解决这些痛点。
这个校园闲置物品交易系统采用主流技术栈构建,后端使用Spring Boot框架提供RESTful API服务,前端采用Vue.js实现响应式界面,数据持久层使用MyBatis操作MySQL数据库。系统实现了用户管理、商品发布、搜索筛选、订单交易等核心功能模块,并整合了JWT认证、Redis缓存、OSS存储等企业级技术方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 后端技术选型
Spring Boot作为后端核心框架,其优势主要体现在:
- 自动配置机制大幅减少了XML配置,通过starter依赖快速集成各类组件
- 内嵌Tomcat服务器,支持独立JAR包部署,简化了运维流程
- 完善的Actuator监控端点,便于生产环境健康检查
- 与Spring Security、Spring Data等生态组件无缝集成
数据库访问层采用MyBatis而非JPA的考虑:
- 需要精细控制SQL语句以获得最佳性能
- 复杂查询场景下MyBatis的灵活性更高
- 已有SQL技能储备的团队学习成本更低
- 动态SQL构建能力更适合多条件筛选场景
2.2 前端技术方案
Vue.js作为前端框架的选择依据:
- 渐进式框架设计,可根据需求逐步扩展功能
- 响应式数据绑定简化了状态管理
- 单文件组件(SFC)实现关注点分离
- Vue Router提供流畅的单页应用体验
- Axios库处理HTTP请求,与后端API交互
前端工程化配置要点:
javascript复制// vue.config.js 关键配置
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
},
chainWebpack: config => {
config.plugin('html').tap(args => {
args[0].title = '校园二手交易平台'
return args
})
}
}
3. 数据库设计与实现
3.1 核心表结构优化
用户表(user)的设计考虑了以下安全措施:
- 密码存储使用BCrypt加密算法,而非明文存储
- 手机号字段添加唯一索引防止重复注册
- 最后登录时间记录用于异常登录检测
- 头像使用OSS存储路径而非直接存储二进制数据
商品表(item)的关键设计点:
sql复制CREATE TABLE `item` (
`item_id` bigint NOT NULL AUTO_INCREMENT,
`seller_id` bigint NOT NULL,
`title` varchar(50) NOT NULL,
`category` varchar(20) NOT NULL COMMENT '分类标签',
`description` text,
`price` decimal(10,2) NOT NULL,
`original_price` decimal(10,2) DEFAULT NULL,
`status` tinyint DEFAULT '0' COMMENT '0-未售 1-已售',
`publish_time` datetime DEFAULT CURRENT_TIMESTAMP,
`cover_image` varchar(128) DEFAULT NULL,
PRIMARY KEY (`item_id`),
KEY `idx_seller` (`seller_id`),
KEY `idx_category` (`c
