随着零售行业的数字化转型加速,传统实体超市面临着运营效率低下、客户覆盖范围有限等挑战。基于SSM框架的网上超市购物系统应运而生,为中小型商户提供完整的电商解决方案。该系统采用成熟稳定的技术架构,实现了商品管理、在线交易、订单处理等核心功能,帮助商户快速搭建数字化销售平台。
系统架构与技术栈
系统采用经典的SSM(Spring + Spring MVC + MyBatis)框架组合,配合Maven进行项目构建和依赖管理。Spring框架作为核心容器,通过IoC(控制反转)和AOP(面向切面编程)实现业务组件的解耦和管理。Spring MVC负责Web层请求路由和响应处理,采用前端控制器模式统一处理HTTP请求。MyBatis作为持久层框架,通过XML配置和注解方式映射SQL语句,简化数据库操作。
前端采用JSP+Servlet技术结合HTML、CSS和JavaScript实现用户界面,确保页面交互的流畅性和用户体验。数据库选用MySQL,通过连接池技术优化数据库访问性能。
数据库设计精要
系统数据库包含11个核心表,设计遵循第三范式,确保数据的一致性和完整性。其中几个关键表的设计体现了系统的业务复杂性:
商品信息表(product)设计:
CREATE TABLE product (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10,2) NOT NULL,
stock INT DEFAULT 0,
category_id INT,
image_url VARCHAR(200),
status TINYINT DEFAULT 1,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES category(id)
);
该表设计采用价格字段使用DECIMAL类型确保计算精度,库存字段实现实时库存监控,通过外键关联分类表建立商品分类体系。时间戳字段自动记录创建和修改时间,为数据追溯提供支持。
订单表(orders)的复杂关系设计:
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(50) UNIQUE NOT NULL,
user_id INT NOT NULL,
total_amount DECIMAL(10,2) NOT NULL,
status TINYINT NOT NULL DEFAULT 0,
payment_status TINYINT DEFAULT 0,
shipping_address TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
pay_time DATETIME,
deliver_time DATETIME,
receive_time DATETIME,
FOREIGN KEY (user_id) REFERENCES user(id)
);
订单表通过状态字段实现订单生命周期管理,包含支付状态、发货状态等多个维度。唯一订单号设计支持高并发场景下的订单创建,时间字段完整记录订单各个阶段的时间节点。
核心功能实现解析
商品分类管理
系统采用两级分类体系,支持灵活的商品组织方式。一级分类作为主要商品分组,二级分类提供更精细的商品归类。

分类管理的Service层实现包含完整的业务逻辑:
@Service
public class CategoryService {
@Autowired
private CategoryMapper categoryMapper;
public List<Category> getFirstLevelCategories() {
return categoryMapper.selectByLevel(1);
}
public List<Category> getSubCategories(Integer parentId) {
return categoryMapper.selectByParentId(parentId);
}
@Transactional
public boolean addCategory(Category category) {
if (category.getParentId() == null) {
category.setLevel(1);
} else {
category.setLevel(2);
}
return categoryMapper.insert(category) > 0;
}
}
购物车功能实现
购物车模块采用Session与数据库结合的方式,实现用户登录状态的购物车数据持久化。

购物车Controller处理核心业务逻辑:
@Controller
@RequestMapping("/cart")
public class CartController {
@Autowired
private CartService cartService;
@PostMapping("/add")
@ResponseBody
public ResponseEntity<String> addToCart(@RequestParam Integer productId,
@RequestParam Integer quantity,
HttpSession session) {
User user = (User) session.getAttribute("currentUser");
if (user == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("请先登录");
}
try {
cartService.addItem(user.getId(), productId, quantity);
return ResponseEntity.ok("添加成功");
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("添加失败:" + e.getMessage());
}
}
@GetMapping("/list")
public String getCartList(Model model, HttpSession session) {
User user = (User) session.getAttribute("currentUser");
List<CartItem> cartItems = cartService.getCartItems(user.getId());
model.addAttribute("cartItems", cartItems);
return "cart/list";
}
}
订单处理流程
订单生成涉及复杂的业务逻辑,包括库存验证、价格计算、订单状态管理等。

订单Service实现完整的下单流程:
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private ProductMapper productMapper;
@Transactional
public Order createOrder(Integer userId, List<CartItem> cartItems,
String shippingAddress) {
// 验证库存
for (CartItem item : cartItems) {
Product product = productMapper.selectById(item.getProductId());
if (product.getStock() < item.getQuantity()) {
throw new RuntimeException("商品库存不足:" + product.getName());
}
}
// 生成订单
Order order = new Order();
order.setOrderNo(generateOrderNo());
order.setUserId(userId);
order.setShippingAddress(shippingAddress);
// 计算总金额
BigDecimal totalAmount = BigDecimal.ZERO;
for (CartItem item : cartItems) {
totalAmount = totalAmount.add(item.getPrice().multiply(
new BigDecimal(item.getQuantity())));
}
order.setTotalAmount(totalAmount);
orderMapper.insert(order);
// 创建订单项
for (CartItem item : cartItems) {
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(order.getId());
orderItem.setProductId(item.getProductId());
orderItem.setQuantity(item.getQuantity());
orderItem.setPrice(item.getPrice());
orderItemMapper.insert(orderItem);
// 更新库存
productMapper.decreaseStock(item.getProductId(), item.getQuantity());
}
return order;
}
private String generateOrderNo() {
return "ORD" + System.currentTimeMillis() +
String.format("%04d", new Random().nextInt(10000));
}
}
用户管理功能
系统提供完整的用户注册、登录和个人信息管理功能。

用户认证的Service层实现:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User login(String username, String password) {
User user = userMapper.selectByUsername(username);
if (user != null && password.equals(user.getPassword())) {
return user;
}
return null;
}
public boolean register(User user) {
// 检查用户名是否已存在
if (userMapper.selectByUsername(user.getUsername()) != null) {
return false;
}
user.setCreateTime(new Date());
return userMapper.insert(user) > 0;
}
public boolean updateUserInfo(User user) {
return userMapper.updateById(user) > 0;
}
}
实体模型设计
系统的实体模型采用面向对象设计原则,每个实体对应数据库中的表,通过MyBatis实现ORM映射。
商品实体类的设计:
public class Product {
private Integer id;
private String name;
private String description;
private BigDecimal price;
private Integer stock;
private Integer categoryId;
private String imageUrl;
private Integer status;
private Date createTime;
private Date updateTime;
// 省略getter和setter方法
}
订单项实体设计,体现与订单的多对一关系:
public class OrderItem {
private Integer id;
private Integer orderId;
private Integer productId;
private Integer quantity;
private BigDecimal price;
private Product product; // 关联商品信息
// 省略getter和setter方法
}
性能优化与安全考虑
系统在性能优化方面采用多级缓存策略,对热点数据进行缓存处理。数据库查询通过索引优化提升查询效率,关键表字段都建立了适当的索引。
安全方面实现用户密码加密存储、SQL注入防护、XSS攻击防范等措施。Spring Security可集成实现更完善的安全控制。
// 密码加密示例
public class SecurityUtil {
public static String encryptPassword(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(password.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(hash);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("加密算法不可用", e);
}
}
}
功能扩展展望
移动端适配:开发响应式设计或独立的移动APP,满足移动购物需求。可采用Vue.js或React Native技术实现。
智能推荐系统:基于用户行为数据实现个性化商品推荐,集成机器学习算法提升销售转化率。
多商户支持:扩展为平台模式,支持多个商户入驻,增加平台营收渠道。
物流跟踪集成:对接第三方物流API,实现订单物流实时跟踪功能。
数据分析看板:构建数据可视化平台,为商户提供销售数据分析决策支持。
该系统通过模块化设计和清晰的分层架构,为后续功能扩展提供了良好的基础。采用接口抽象和依赖注入的设计理念,新功能的集成不会影响现有系统的稳定性。
系统的技术实现体现了企业级应用开发的最佳实践,包括异常处理、事务管理、日志记录等关键要素。代码结构清晰,便于团队协作开发和后期维护,为中小型零售企业提供了可靠的电商平台解决方案。