校易淘收藏 订单业务环境搭建多表查询、事务失效踩坑记录一、模块业务介绍收藏、订单属于关联多表业务涉及 user 用户表、goods 商品表、collect 收藏表、order 订单表存在大量关联查询与数据修改操作本文记录两张新表设计、事务配置、业务分层搭建、多表查询报错解决方案。二、新建数据表收藏表 collectsqlCREATE TABLE collect ( id bigint AUTO_INCREMENT PRIMARY KEY, user_id bigint NOT NULL COMMENT 收藏用户, goods_id bigint NOT NULL COMMENT 收藏商品, create_time datetime DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_user_goods(user_id,goods_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;联合唯一索引防止重复收藏。2. 订单表 trade_ordersqlCREATE TABLE trade_order ( id bigint AUTO_INCREMENT PRIMARY KEY, order_no varchar(32) NOT NULL COMMENT 订单编号, buyer_id bigint NOT NULL COMMENT 买家id, seller_id bigint NOT NULL COMMENT 卖家id, goods_id bigint NOT NULL COMMENT 商品id, price decimal(10,2) NOT NULL COMMENT 成交价格, order_status tinyint DEFAULT 1 COMMENT 1待交易 2已完成 3取消, create_time datetime DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;三、后端环境配置新建 collect、order 业务 controller、service、mapper、entity开启 Spring 事务管理添加 Transactional 注解支持下单原子操作多表关联 VO 封装收藏列表、订单列表需要同时查询商品信息、用户昵称前端新增收藏列表、个人订单页面路由。四、高频踩坑整理事务失效方法为 private、未加 Transactional、异常未抛出解决方案public 方法、捕获异常手动抛出 RuntimeException重复收藏数据冗余未设置联合唯一索引添加 uk_user_goods 唯一约束多表联查返回实体映射失败新建 VO 接收多表字段不直接使用单表 Entity并发下单商品状态同步异常下单事务内同步更新 goods 商品状态为已售出。五、搭建总结订单模块涉及数据一致性事务是重中之重开发前必须开启事务支持同时数据库增加唯一索引从底层规避脏数据减少业务层判断压力。