当前位置: 首页 > news >正文

校易淘实训|Vue3+SpringBoot+MySQL 前后端分离项目从零搭建完整流程 + 全套踩坑解决方案

标签:#Vue3 #SpringBoot #前后端分离 #MyBatis-Plus #校园二手平台字数:约 1200 字

一、项目前言

本次实训我们开发校园二手交易平台「校易淘」,采用标准前后端分离架构。本文完整记录从零搭建前后端基础工程、数据库设计、跨域配置、接口联调全过程,把开发时遇到的端口冲突、跨域、MyBatis 映射、时区报错等高频问题一次性给出解决方案,适合刚接触前后端分离的同学参考。

二、开发工具准备

  1. 后端:IDEA 2024、Maven3.8、MySQL8.0、Navicat
  2. 前端:VSCode、Node16、npm、Vite
  3. 辅助工具:Postman 接口测试、Git 代码管理

三、后端 SpringBoot 项目搭建

  1. 初始化依赖 新建 SpringBoot 工程,勾选核心依赖: Spring Web、MySQL Driver、MyBatis-Plus Starter、Lombok、Validation、WebSocket(预留聊天模块) pom.xml 核心依赖片段:

xml

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
  1. application.yml 配置

yaml

server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/campus_trade?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: root mybatis-plus: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.trade.entity configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  1. 基础配置类
  • 跨域 CorsConfig:解决前端 8081 访问后端 8080 跨域拦截
  • MyBatisPlus 分页插件配置
  • 全局统一返回结果类 Result、全局异常处理器 GlobalExceptionHandler

四、前端 Vue3 项目搭建

  1. Vite 创建项目

bash

npm create vite@latest campus-front -- --template vue cd campus-front npm install npm install element-plus axios vue-router@4 pinia
  1. 全局封装 Axios 请求,统一添加请求头 token、统一拦截错误
  2. 路由 Router 搭建,划分登录页、首页、商品、订单、聊天、个人中心路由
  3. 配置 vite.config.js 代理,转发 /api 请求到后端localhost:8080

js

server: { proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } }

五、数据库基础表设计

创建数据库 campus_trade,核心基础表 user 用户表:

sql

CREATE TABLE `user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `stu_id` varchar(20) NOT NULL COMMENT '学号(唯一登录凭证)', `username` varchar(30) DEFAULT NULL COMMENT '昵称', `password` varchar(100) NOT NULL COMMENT '密码加密存储', `avatar` varchar(255) DEFAULT NULL COMMENT '头像', `create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_stuid` (`stu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

六、联调测试与全套踩坑汇总

  1. 跨域报错:未配置 CorsConfig,前端请求 403,新增全局跨域配置解决;
  2. 数据库时区异常:url 添加 serverTimezone=Asia/Shanghai;
  3. Lombok 失效:IDEA 安装 Lombok 插件、开启注解支持;
  4. MyBatis 下划线转驼峰不生效:开启 map-underscore-to-camel-case;
  5. Vite 代理失效:接口路径统一加 /api 前缀,后端接口统一匹配。

七、个人实操心得

搭建基础框架是整个项目地基,前期规范配置、统一返回格式、提前处理跨域和分页,能大幅减少后续模块开发的重复 bug。前后端分离一定要约定统一接口规范,否则多人开发极易出现对接冲突。

http://www.gsyq.cn/news/1608912.html

相关文章:

  • Kazumi番剧播放器:如何通过插件扩展实现全网动漫自由观看
  • 从Wireshark到NpCap:动手构建网络协议解析与流量监控工具
  • 从跑分到洞察:CPU性能评估工具全解析与实战指南
  • Python量化交易数据获取的终极解决方案:efinance免费金融数据库完全指南
  • MCP 会取代 API 吗?普通开发者应该怎么理解它?
  • AI智能审核技术架构解析:规则引擎与大模型协同的双重拦截
  • 从Latte到StreamingT2V:一文看懂开源视频生成模型的“时空注意力”到底怎么玩的
  • 专业网盘直链下载工具LinkSwift深度解析与实战配置指南
  • Typora 1.8.2 保姆级配置指南:从图片管理到自动保存,一次搞定所有隐藏设置
  • 从MicroLogix升级到Micro800?手把手教你用CCW 22.0搞定PCCC通信迁移
  • JDK系列01:Java环境搭建与JDK版本区别,JDK8/11/17安装、环境变量配置全教程
  • C语言实战:cJSON库在嵌入式网络通信中的配置数据封装与解析
  • 【MATLAB】异构无人机集群协同飞行控制仿真
  • 零基础 Vibe Coding 教程 settings.json CLAUDE.md 26-32
  • 深度学习优化器演进之路:从SGD到Adam的核心思想与实战选择
  • 「实践」CosineLRScheduler:从理论到代码的平滑训练指南
  • 若依Vue3框架:深度解析侧边栏菜单的默认展开与状态管理
  • Kali APT 仓库数字签名缺失:从报错到安全更新的解决之道
  • 从原理图到示波器:imx6ull开发板PWM输出全流程实战解析
  • Logisim实战:从零构建32位MIPS ALU运算器
  • 【Unity3D】从零到一:打造可自定义的记忆翻牌小游戏
  • Qt实战:从C2001“常量中有换行符”错误,解析MSVC编译下的UTF-8编码陷阱与根治方案
  • STM32实现高精度NTP网络授时:从协议解析到本地时间转换
  • ESP8266点对点通信实战:从AT指令到数据透传
  • VDA 2 第六版深度解析:数字化时代下PPA(生产过程和产品批准)的标准化实践与合规保障
  • LaTeX(0): 从零到一,TeXLive与TeXStudio的极速部署与高效入门
  • 鸿蒙 App 如何设计 Agent Bus?一文讲透智能体通信机制
  • GeoServer信息泄漏漏洞CVE-2025-27505复现与安全加固指南
  • 怎样高效突破网盘限速:5个实战技巧使用LinkSwift开源工具
  • 沁恒 CH32V208(三): 在Ubuntu22.04上构建VSCode+CMake一体化开发环境