基于 SSM 的网上宠物商店设计与实现(Spring+SpringMVC+MyBatis+MySQL)
一、前言
养宠家庭逐年增多,宠物消费从「吃饱」走向「养好」,线上宠物商店也成了不少毕设选题和实体商家触网的第一步。一个能跑通的宠物商店系统,至少要把四件事串起来:商品按分类陈列、会员加购下单、订单支付流转、后台把商品和订单管起来——再加一个客诉通道,就是一套完整的电商闭环。
本文拆解的这套网上宠物商店基于SSM(Spring + SpringMVC + MyBatis)开发,9 张表覆盖商品、分类、库存、购物车、订单、会员、资讯、客诉和管理员,前台商城 + 后台管理双端完整,并内置了支付宝沙箱支付模块。对想做电商类毕业设计、或者想看 MyBatis 在小项目里怎么组织的读者来说,是一个非常合适的参考样本。
二、技术栈与总体架构
| 层次 | 技术 | 说明 |
|---|---|---|
| 表现层 | JSP + jQuery + Ajax | ckeditor 富文本、My97DatePicker 日期、saveimage.jsp 图片上传 |
| 控制层 | SpringMVC(DispatcherServlet) | 10 个 @Controller,*.action 路由,@ResponseBody 异步接口 |
| 业务层 | Service 接口 + 实现 | Spring IoC 装配,DataSourceTransactionManager 事务 |
| 持久层 | MyBatis + DBCP | com/entity/*.xml 映射文件,SqlSessionTemplate 执行 |
| 数据库 | MySQL(utf-8) | 库 pet_shop,9 张表 |
| 支付 | 支付宝沙箱(RSA2) | alipay.trade.page.pay 统一下单 + 异步/同步通知 |
| 环境 | JDK 1.8 + Tomcat 8.5 | 非 Maven,lib 目录管理依赖 |
实现层面有三个值得看的点:
- 轻量 MyBatis 接入。没有用 Mapper 接口扫描,而是 mybatis.xml 集中注册 com/entity/*.xml 映射文件,DAO 里用 SqlSessionTemplate 按 namespace+id 调用,是对 MyBatis 最朴素也最容易看懂的用法。
- 订单-库存两阶段。goods 表管商品档案,items 表管库存数量,下单扣库存、支付改订单状态,购物车(cart)按会员维度暂存,是一个麻雀虽小的电商库存模型。
- 支付模块独立成包。com.alipay.config 集中管理 APPID、RSA2 密钥、异步/同步通知地址,支付逻辑与业务代码解耦,接入正式支付时只需替换配置。
三、功能设计
前台商城(游客/会员)
- 门户首页:轮播图、分类导航(水族类/爬行类/宠物猫/宠物狗)、特价与推荐商品位、宠物资讯;
- 商品浏览:全部商品列表、按分类筛选、商品搜索;
- 商品详情:图文详情、价格库存、加入购物车、热门商品侧栏;
- 会员中心:注册、登录、资料与密码维护;
- 购物车:加购、数量调整、结算;
- 订单支付:订单生成、支付宝沙箱支付、订单查看。
后台管理(管理员)
- 商品管理:商品上架/编辑/删除,价格、库存、图片、特价与推荐位维护(分页);
- 分类管理:宠物分类维护;
- 订单管理:订单列表与状态跟踪;
- 会员管理:注册会员查询与维护;
- 资讯管理:宠物资讯富文本发布;
- 客诉管理:投诉建议查看与处理;
- 管理员管理:管理员账号与密码维护。
四、数据库设计
| 表 | 含义 | 关键字段 |
|---|---|---|
| goods | 商品 | goodsid、goodsname、cateid、price/sprice、picture、description、库存与销量 |
| items | 库存 | itemsid、goodsid、num |
| cate | 分类 | cateid、catename、remark |
| cart | 购物车 | cartid、userid、goodsid、num、price |
| orders | 订单 | ordersid、userid、total、status、creattime |
| users | 会员 | userid、username、password、realname、sex、phone |
| article | 资讯 | articleid、title、picture、content(富文本) |
| complains | 客诉 | complainsid、内容与处理状态 |
| admin | 管理员 | adminid、username、password、realname、phone |
模型上比较规范的做法有两处:一是商品与库存分离(goods/items 两表),上架信息与库存数量互不干扰;二是订单与购物车都以会员为轴(userid 外键),购物车结算生成订单,状态字段驱动订单生命周期。
五、系统演示
前台门户首页,轮播、分类导航与商品陈列:
全部商品列表与商品详情页(价格、库存、加入购物车):
会员登录与注册页:
后台管理员登录与工作台:
商品信息管理(特价/推荐/库存/销量一目了然,支持分页):
分类管理与订单管理:
会员管理与资讯管理:
六、小结
这套系统把一个小型电商最核心的链路走完了:分类陈列 → 详情加购 → 结算下单 → 沙箱支付 → 后台管单管货。代码层面,SpringMVC 的注解路由、MyBatis 的 XML 映射、DBCP 数据源、文件上传与富文本整合都有现成写法可抄;支付宝沙箱模块独立成包,换成正式商户号也只是改配置。
想继续演进的话,可以加秒杀库存锁、把订单状态机细化(待付款/待发货/已完成/已退款),或者接入微信扫码支付做双通道。
完整资源已整理上传(含可运行源码、数据库脚本与部署说明):
网上宠物商店源码(SSM+MySQL,含支付宝沙箱支付)
如果在实现类似系统时遇到问题,欢迎评论区交流。