地方特产商城 Spring Boot 后端项目

简介: 基于Spring Boot 3.5.6的地方特产商城后端,集成MyBatis、Redis与MySQL,支持店铺管理、用户认证及评价功能。采用RESTful架构,统一响应封装,具备缓存优化与自定义异常处理,代码规范清晰,助力高效开发。

🏪 地方特产商城 Spring Boot 后端项目
📖 项目简介
这是一个基于 Spring Boot 3.5.6 开发的地方特产商城后端系统,提供店铺管理、用户认证、商品评价等核心功能,采用前后端分离架构,使用 MyBatis 作为持久层框架,集成 Redis 缓存提升性能。
🛠️ 技术栈
技术
版本
说明
Spring Boot
3.5.6
核心框架
Java
17
开发语言
MyBatis
3.0.5
持久层框架
MySQL
8.0.43
数据库
Redis
-
缓存中间件
Lombok
1.18.34
简化实体类开发
Spring Data JPA
-
数据访问层
Spring Validation
-
参数校验
🏗️ 项目架构
local-specialty-shop
├── src/main/java
│ └── com.werlite.localspecialtyshop
│ ├── Exception # 自定义异常
│ ├── config # 配置类
│ ├── controller # 控制器层
│ ├── dto # 数据传输对象
│ ├── entity # 实体类
│ ├── mapper # 数据访问层接口
│ └── service # 业务逻辑层
├── src/main/resources
│ ├── mapper # MyBatis XML 映射文件
│ └── application.properties # 配置文件
└── pom.xml # Maven 依赖配置
✨ 核心功能
1️⃣ 店铺管理模块
接口列表:
GET /api/shops - 获取所有店铺
GET /api/shops/region?region=first - 按区域查询
GET /api/shops/type?type=1 - 按类型查询
GET /api/shops/search?keyword=美食 - 搜索店铺
POST /api/shops - 新增店铺
PUT /api/shops - 更新店铺
DELETE /api/shops/{id} - 删除店铺
DELETE /api/shops/cache - 清除缓存
店铺实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Shop {
private Long id; // 主键ID
private String name; // 店铺名称
private String imgUrl; // 图片路径
private String tag; // 标签
private Double rating; // 评分
private String description; // 描述
private String price; // 价格范围
private String region; // 区域(first/second/third/fourth)
private String type; // 类型(1-6)
}
2️⃣ 用户认证模块
接口列表:
POST /api/user/login - 用户登录(返回 Token)
POST /api/user/logout - 退出登录
用户实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id; // 用户ID
private String username; // 用户名
private String nickname; // 昵称
private String password; // 密码(加密存储)
private String avatar; // 头像URL
private String phone; // 手机号
private String email; // 邮箱
private Integer gender; // 性别(0=未知,1=男,2=女)
private LocalDate birthday; // 生日
private Integer status; // 状态(0=禁用,1=正常)
private LocalDateTime createdTime; // 创建时间
private LocalDateTime updatedTime; // 更新时间
}
3️⃣ 评价模块
支持店铺评价的增删改查,提供用户与店铺的双向关联查询。
🔧 核心配置
Maven 配置(pom.xml)

org.springframework.boot
spring-boot-starter-parent
3.5.6

org.springframework.boot
spring-boot-starter-web

org.mybatis.spring.boot
mybatis-spring-boot-starter
3.0.5

com.mysql
mysql-connector-j
8.0.33

org.springframework.boot
spring-boot-starter-data-redis

org.projectlombok
lombok
1.18.34
应用配置(application.properties)
spring.application.name=local-specialty-shop
server.port=8081

MySQL 配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/local_specialty_shop?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

Hikari 连接池
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=300000

MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.werlite.localspecialtyshop.entity
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

Redis 配置
spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.database=0
spring.data.redis.timeout=3000
spring.data.redis.lettuce.pool.max-active=8
spring.data.redis.lettuce.pool.max-idle=8
spring.data.redis.lettuce.pool.min-idle=0
🎯 核心特性
✅ 统一响应封装
@Data
@AllArgsConstructor
public class ApiResponse {
private Integer code;
private String message;
private T data;

public static ApiResponse success(T data) {
return new ApiResponse<>(200, "成功", data);
}

public static ApiResponse error(String message) {
return new ApiResponse<>(500, message, null);
}
}
✅ Redis 缓存支持
店铺列表缓存
用户 Token 缓存
手动缓存清除接口
✅ 自定义异常处理
LoginFailedException - 登录失败异常
ResourceNotFoundException - 资源未找到异常
✅ 数据源健康检查
启动时自动检查 MySQL 驱动加载状态
🚀 快速开始

环境准备
JDK 17+
MySQL 8.0+
Redis
Maven 3.6+
数据库初始化
创建数据库 local_specialty_shop,导入初始化脚本
修改配置
根据实际情况修改 application.properties 中的数据库和 Redis 连接信息
启动项目
mvn spring-boot:run
访问接口
默认端口:http://localhost:8081
📝 API 调用示例
用户登录
POST http://localhost:8081/api/user/login
Content-Type: application/x-www-form-urlencoded
username=testuser&password=123456
查询所有店铺
GET http://localhost:8081/api/shops
搜索店铺
GET http://localhost:8081/api/shops/search?keyword=火锅
新增店铺
POST http://localhost:8081/api/shops
Content-Type: application/json

{
"name": "老字号美食店",
"imgUrl": "http://example.com/img.jpg",
"tag": "传统美食",
"rating": 4.5,
"description": "百年老店,味道正宗",
"price": "50-100元",
"region": "first",
"type": "1"
}
📊 项目亮点
前后端分离架构 - RESTful API 设计,易于对接前端
Redis 缓存加速 - 提升高频接口性能
统一响应格式 - 便于前端统一处理
异常统一处理 - 自定义异常体系
参数校验 - 使用 Spring Validation 保证数据合法性
代码规范 - 使用 Lombok 简化代码,注释清晰
📌 未来规划
[ ] 集成 Spring Security 实现完整的认证授权
[ ] 添加商品管理模块
[ ] 实现订单支付功能
[ ] 集成 OSS 对象存储服务
[ ] 添加接口文档(Swagger/Knife4j)
[ ] 性能优化与压力测试
📧 联系方式
如有问题或建议,欢迎交流!

⭐ 如果这个项目对你有帮助,欢迎 Star 支持!

这份博文内容详实、结构清晰,包含了技术栈、架构、核心代码、配置示例和 API 调用说明,你可以直接复制粘贴到你的博客平台(如 CSDN、掘金、博客园等)。根据平台的 Markdown 渲染效果,可能需要微调表格和代码块的格式。

相关文章
|
3月前
|
Java 应用服务中间件 数据库连接
生产环境缺陷管理
本教程介绍如何在Eclipse中配置Java Web开发环境,涵盖JDK、Tomcat安装与项目导入。支持Maven及非Maven项目,详细演示Eclipse绑定Tomcat、部署运行及常见问题处理,如数据库连接配置错误等,助你快速搭建并启动Web项目。
|
3月前
|
缓存 JSON JavaScript
TypeScript 快速上手指南
TypeScript是JavaScript的超集,支持静态类型,提升代码质量与可维护性。本文涵盖环境搭建、核心语法、实战示例及工程化配置,零基础也能快速上手,适合Vue3、React等大型项目开发。
|
3月前
|
JavaScript 前端开发 API
Vue3 从入门到实战
Vue3 从入门到实战,涵盖组合式 API、响应式数据、组件化开发与生命周期等核心内容。提供可直接运行的代码示例,零基础快速上手,助力高效构建现代化前端应用。
|
3月前
|
JSON Java fastjson
Spring Boot返回Json数据及数据封装
Spring Boot默认使用Jackson处理JSON,通过@RestController可直接返回JSON数据。本文详解Jackson与FastJson的配置与对比,并封装统一的JSON返回结构,提升前后端交互规范性与开发效率。
|
3月前
|
存储 JSON JavaScript
JSON 快速上手指南
JSON是一种轻量级数据交换格式,语法严格,键名需双引号、值类型有限,支持跨语言解析。本文详解其语法规则、与JS对象区别、序列化/解析方法(stringify/parse)、实战应用及常见避坑技巧,助你快速掌握JSON核心技能。
|
3月前
|
JavaScript 前端开发 Java
Bootstrap5 快速上手指南
Bootstrap5 快速上手指南:告别 jQuery,拥抱原生 JS!新增 xxL 断点与 RTL 支持,优化栅格系统与组件样式。提供 CDN 引入、核心布局、常用组件及完整博客实例,零基础也能快速搭建美观响应式博客,含按钮、卡片、导航栏、表单等实战代码,即拷即用。
Bootstrap5 快速上手指南
|
3月前
|
存储 关系型数据库 MySQL
B+ 树索引
B+树是MySQL InnoDB引擎的核心索引结构,具自平衡、有序存储特性,支持高效查找、插入、删除。所有数据存于叶子节点,且叶节点相连,利于范围查询。广泛用于读密集、排序及范围检索场景,显著降低磁盘I/O,提升查询性能,是数据库优化的关键技术。
|
3月前
|
自然语言处理 关系型数据库 MySQL
MySQL 全文索引
MySQL全文索引支持对CHAR、VARCHAR、TEXT字段进行高效文本搜索,适用于文章、评论等长文本。通过MATCH()与AGAINST()实现自然语言或布尔模式查询,支持分词、停用词过滤和最小词长设置。可创建于建表时或后期添加,适用于搜索引擎、CMS、电商等场景,提升关键词检索效率,但需权衡增删改开销与索引维护成本。(238字)
|
3月前
|
监控 关系型数据库 MySQL
MySQL 联合索引
联合索引是MySQL中提升多列查询性能的关键技术,由多个列组成,遵循最左前缀原则。合理设计索引顺序可显著加速查询,避免全表扫描。需结合实际查询需求创建,避免冗余,配合EXPLAIN分析执行计划,优化数据库性能。(238字)
|
3月前
|
SQL 存储 关系型数据库
吃透 MySQL 核心
本文深入解析MySQL核心原理与阿里实战调优,涵盖架构分层、索引机制、事务锁、SQL优化及阿里云RDS部署。从底层B+树到高并发调优,助你掌握大厂级数据库技能,轻松应对面试与生产挑战。(239字)

热门文章

最新文章