本地特色小店数据化平台

简介: 基于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

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

<!-- MySQL 驱动 -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

<!-- Redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- Lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.34</version>
</dependency>


应用配置(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 <T> ApiResponse<T> success(T data) {
    return new ApiResponse<>(200, "成功", data);
}

public static <T> ApiResponse<T> error(String message) {
    return new ApiResponse<>(500, message, null);
}

}
✅ Redis 缓存支持
店铺列表缓存
用户 Token 缓存
手动缓存清除接口
✅ 自定义异常处理
LoginFailedException - 登录失败异常
ResourceNotFoundException - 资源未找到异常
✅ 数据源健康检查
启动时自动检查 MySQL 驱动加载状态
🚀 快速开始

  1. 环境准备
    JDK 17+
    MySQL 8.0+
    Redis
    Maven 3.6+
  2. 数据库初始化
    创建数据库 local_specialty_shop,导入初始化脚本
  3. 修改配置
    根据实际情况修改 application.properties 中的数据库和 Redis 连接信息
  4. 启动项目
    mvn spring-boot:run
  5. 访问接口
    默认端口: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 渲染效果,可能需要微调表格和代码块的格式。

相关文章
|
2月前
|
缓存 JSON JavaScript
TypeScript 快速上手指南
TypeScript是JavaScript的超集,支持静态类型,提升代码质量与可维护性。本文涵盖环境搭建、核心语法、实战示例及工程化配置,零基础也能快速上手,适合Vue3、React等大型项目开发。
|
2月前
|
人工智能 安全 小程序
阿里云无影云电脑详细介绍:具体价格、使用及免费领取三个月申请流程
阿里云无影云电脑(Elastic Desktop Service)是一种安全高效的云上桌面服务,支持快速部署与弹性扩容,适用于办公、教育、设计等场景。产品分企业版和个人版:企业版适合组织使用,支持多配置及GPU图形处理,4核8G低至199元/年;个人版涵盖黄金到黑金多档,满足游戏、AI开发等需求,黄金款14元/月起。现可申请免费试用1个月。
445 9
|
2月前
|
人工智能 数据可视化 安全
阿里云建站:AI万小智,万小智AI建站送.cn域名
万小智是阿里云推出的AI数字员工,面向企业及个人提供AI驱动的自助建站服务。支持对话建站、AI生成配图与内容,预置千套模板,多端适配,可视化拖拽操作,集成云服务器、数据库、CDN等云服务,保障安全高效。活动期间,购建站产品送.CN域名首年免费,新客首年仅99元起,助力用户低成本快速搭建专业官网并实现智能运营。
|
数据库 对象存储
2025年 | 12月云大使推广奖励规则
云大使推广返利活动,企业新用户下单返佣加码5%,推广最高返佣45%,新老用户都可参与返利活动。
|
2月前
|
存储 JSON JavaScript
JSON 快速上手指南
JSON是一种轻量级数据交换格式,语法严格,键名需双引号、值类型有限,支持跨语言解析。本文详解其语法规则、与JS对象区别、序列化/解析方法(stringify/parse)、实战应用及常见避坑技巧,助你快速掌握JSON核心技能。
|
2月前
|
JavaScript 前端开发 API
Vue.js 快速上手指南
Vue.js 是轻量级渐进式前端框架,核心聚焦视图层,上手简单、生态丰富。本文提供可直接复制的快速入门指南,涵盖 Vue3 组合式 API、响应式数据、指令、组件化、生命周期及 Axios 异步请求等实战内容,附完整示例与避坑提示,零基础也能快速搭建交互式页面,助力高效开发。
|
2月前
|
存储 关系型数据库 MySQL
B+ 树索引
B+树是MySQL InnoDB引擎的核心索引结构,具自平衡、有序存储特性,支持高效查找、插入、删除。所有数据存于叶子节点,且叶节点相连,利于范围查询。广泛用于读密集、排序及范围检索场景,显著降低磁盘I/O,提升查询性能,是数据库优化的关键技术。
|
2月前
|
自然语言处理 关系型数据库 MySQL
MySQL 全文索引
MySQL全文索引支持对CHAR、VARCHAR、TEXT字段进行高效文本搜索,适用于文章、评论等长文本。通过MATCH()与AGAINST()实现自然语言或布尔模式查询,支持分词、停用词过滤和最小词长设置。可创建于建表时或后期添加,适用于搜索引擎、CMS、电商等场景,提升关键词检索效率,但需权衡增删改开销与索引维护成本。(238字)
|
人工智能 算法 程序员
人类专家:这代码逻辑我看不太懂。AI:没关系,能跑通,而且比你快
英伟达新论文《SATLUTION》震撼AI与编程界:AI自主进化出SAT求解器,竟超越人类冠军。它不靠补全代码,而是通过“规划+编码”双智能体,在严格规则与验证下自我迭代。70轮后,性能反超顶尖人工求解器,成本却不足2万美元。更深远的是,人类角色正从“写代码”转向“定规则、做验证”。这不仅是技术突破,更是对程序员未来的重新定义:我们或将成为AI的教练与考官,而非唯一的手艺人。
172 12