news 2026/4/17 17:47:26

分享一个开源的商城系统:SpringBoot + Vue +Redis + MyBatis 前后端分离技术栈

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分享一个开源的商城系统:SpringBoot + Vue +Redis + MyBatis 前后端分离技术栈

前言

之前在业余时间开发过一个商城管理系统,技术栈是目前比较主流的前后端分离。前端主要使用的是Vue框架、后端是SpringBoot框架、中间件采用的是Redis、数据库采用的是Mysql、持久层框架是Mybatis。目前代码已经开源到GitHub、对初学者来说有一定的参考价值~

更多文章:更多资源

需求功能说明

基本上包括了从管理员发布商品,到用户下订单购买收货的大致流程。简化了相关的逻辑,进攻参考学习。这里大致说明一下功能:商品分类管理、商品管理、订单管理、用户浏览商品,下订单购买、查看订单状态等。后台管理多为列表,增删改查这些操作。了解掌握一个模块,大部分模块即可掌握。注意:这里的业务逻辑经过简化,不代表实际生产操作。

实现效果截图

这里截取部分页面效果,页面设计的也较为简单。

图1 首页

相关代码

/** * 查询商品 * * @param id 商品id * @return 商品 */ public Good getGoodById(Long id) { String redisKey = RedisConstants.GOOD_ID_KEY + id; //从redis中查,若有则返回 Good redisGood = redisTemplate.opsForValue().get(redisKey); if (redisGood != null) { redisTemplate.expire(redisKey, RedisConstants.GOOD_ID_TTL, TimeUnit.MINUTES); return redisGood; } //若redis中没有则去数据库查 Good dbGood = lambdaQuery().eq(Good::getIsDelete, Boolean.FALSE).eq(Good::getId, id).one(); if (dbGood != null) { //将商品信息存入redis redisTemplate.opsForValue().set(redisKey, dbGood, RedisConstants.GOOD_ID_TTL, TimeUnit.MINUTES); return dbGood; } //数据库中没有则返回异常 throw new BizException(Status.NO_RESULT, "无结果"); }

图2 商品详情

相关代码

/** * 分页查询商品 - 带查询条件 * * @param pageNum 页数 * @param pageSize 分页大学 * @param searchText 查询文本 * @param categoryId 分类id * @return 商品列表 */ public IPage<GoodVo> findPage(Integer pageNum, Integer pageSize, String searchText, Integer categoryId) { LambdaQueryWrapper<Good> query = Wrappers.<Good>lambdaQuery() //对商品名称模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getName, searchText).or() //对商品描述模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getDescription, searchText).or() //商品id查询 .eq(StrUtil.isNotBlank(searchText), Good::getId, searchText) .eq(categoryId != null, Good::getCategoryId, categoryId) .eq(Good::getIsDelete, Boolean.FALSE) .orderByDesc(Good::getId); //分页查询 IPage<Good> page = this.page(new Page<>(pageNum, pageSize), query); IPage<GoodVo> goodVoPage = page.convert(good -> { GoodVo goodVo = new GoodVo(); BeanUtil.copyProperties(good, goodVo); return goodVo; }); for (GoodVo good : goodVoPage.getRecords()) { //附上最低价格 good.setPrice(getMinPrice(good.getId())); } return goodVoPage; }

图3 商品详情列表

相关代码

/** * 分页查询商品 - 带查询条件 * * @param pageNum 页数 * @param pageSize 分页大学 * @param searchText 查询文本 * @param categoryId 分类id * @return 商品列表 */ public IPage<GoodVo> findPage(Integer pageNum, Integer pageSize, String searchText, Integer categoryId) { LambdaQueryWrapper<Good> query = Wrappers.<Good>lambdaQuery() //对商品名称模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getName, searchText).or() //对商品描述模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getDescription, searchText).or() //商品id查询 .eq(StrUtil.isNotBlank(searchText), Good::getId, searchText) .eq(categoryId != null, Good::getCategoryId, categoryId) .eq(Good::getIsDelete, Boolean.FALSE) .orderByDesc(Good::getId); //分页查询 IPage<Good> page = this.page(new Page<>(pageNum, pageSize), query); IPage<GoodVo> goodVoPage = page.convert(good -> { GoodVo goodVo = new GoodVo(); BeanUtil.copyProperties(good, goodVo); return goodVo; }); for (GoodVo good : goodVoPage.getRecords()) { //附上最低价格 good.setPrice(getMinPrice(good.getId())); } return goodVoPage; }

分享几个开源的项目(在GitHub上)

🎯 项目一:美妆商城系统

技术栈:SpringBoot + Vue + mybatis + mysql

https://github.com/zhengyuzh/meizhuangshop

🚀 项目二:智能美妆商城系统

技术栈:SpringBoot + Vue + 协同过滤算法 + 敏感词过滤 + mybatis + mysql

https://github.com/zhengyuzh/mzshop

🛍️ 项目三:通用商城系统

技术栈:前后端分离 SpringBoot + Vue + mybatis + mysql

https://github.com/zhengyuzh/mallsystem

💗 项目四:大学生心理健康管理系统

技术栈:SpringBoot + mybatis + mysql 等

https://github.com/zhengyuzh/Mental-health-management-system

📚 项目五:智能书籍借阅系统

技术栈:SpringBoot + Vue + Redis + Mybatis-plus + 微信小程序

https://github.com/zhengyuzh/Book-borrowing-system

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:27:19

大模型RAG技术完全指南:是什么+三种形态+实战案例,建议收藏!

RAG 核心认知&#xff1a;是什么、有哪些形态 什么是RAG 简单说&#xff0c;RAG&#xff08;检索增强生成&#xff09;就是给 AI 模型装了一个 “专属知识库 精准搜索引擎”。AI 在回答问题时&#xff0c;只基于你提供的真实知识&#xff08;比如公司文档、专业资料、实时数据…

作者头像 李华
网站建设 2026/4/18 8:51:11

深入理解网络分层模型:数据封包与解包全解析

深入理解网络分层模型&#xff1a;数据封包与解包全解析引言&#xff1a;网络通信的"洋葱模型"一、网络分层模型概述1.1 OSI七层模型 vs TCP/IP四层模型二、数据封包过程详解2.1 应用层封包2.2 传输层封包&#xff08;以TCP为例&#xff09;2.3 网络层封包&#xff0…

作者头像 李华
网站建设 2026/4/18 8:32:03

Java面试场景:深入探讨Spring Boot与微服务架构应用

Java面试场景&#xff1a;深入探讨Spring Boot与微服务架构应用 场景描述 在一家互联网大厂的面试场景中&#xff0c;小白程序员“超好吃”面试Java开发岗位。面试官是一位严肃但不失温和的技术专家&#xff0c;整个面试过程由三轮提问组成&#xff0c;涉及Spring Boot、微服务…

作者头像 李华
网站建设 2026/4/18 5:08:37

35岁程序员必看!大模型转型全攻略+学习资源,收藏这篇就够了!

35岁程序员面临职业转型十字路口时&#xff0c;大模型作为当下最热门的技术赛道&#xff0c;无疑是极具吸引力的选择。但跨领域转型并非易事&#xff0c;需要系统规划与稳步推进。以下是专为35岁程序员量身定制的大模型领域转行落地步骤&#xff0c;兼顾基础入门与技能衔接&…

作者头像 李华
网站建设 2026/4/18 5:07:56

转行大模型开发必备:知识体系、能力要求与实战指南,非常详细收藏我这一篇就够了

本文详细解析转行大模型开发所需的知识体系与学习路径&#xff0c;涵盖编程语言、数学基础、机器学习、NLP等核心技能&#xff0c;并从入门到专业阶段规划了技术路线。通过明确各项技术的掌握程度&#xff0c;结合医疗行业应用案例和岗位需求数据&#xff0c;为转行者提供系统性…

作者头像 李华