mybatisplus多表关联新增
时间: 2025-01-18 20:55:41 浏览: 30
### 使用 MyBatisPlus 实现多表关联的新建操作
#### 创建实体类并配置映射关系
对于涉及多个表的操作,在创建实体类时需要注意字段之间的对应关系以及额外字段的处理。当向主表 PO 中添加来自其他表的字段时,应使用 `@TableField` 注解来标记这些字段,并设置 `select=false` 和 `exist=false` 属性以防止影响插入和更新逻辑[^4]。
```java
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
public class OrderDetail {
private Long id; // 主键
@TableField(select = false, exist = false)
private String productName; // 关联产品名称
}
```
#### 编写 Mapper 接口继承 BaseMapper
通过让自定义的 Mapper 继承 MyBatis-Plus 提供的基础接口 `BaseMapper<T>` 来获得基本 CRUD 功能的支持[^2]:
```java
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface OrderDetailMapper extends BaseMapper<OrderDetail> {}
```
#### Service 层封装业务逻辑
在服务层可以进一步封装具体的业务流程,比如先保存订单详情再同步更新相关的产品库存状态等。如果涉及到跨表的数据一致性维护,则建议采用分布式事务管理方案确保数据的一致性和准确性[^1]。
#### Controller 控制器接收请求参数
最后是在控制器层面编写 API 方法用于接收外部传入的数据对象实例化对应的实体类完成持久化存储过程。
```java
@RestController
@RequestMapping("/orderDetails")
public class OrderDetailController {
@Autowired
private IOrderDetailService orderDetailsService;
@PostMapping("")
public Result save(@RequestBody OrderDetail detail){
boolean success = orderDetailsService.save(detail);
return new Result(success ? CodeEnum.SUCCESS : CodeEnum.FAILURE);
}
}
```
上述代码展示了如何利用 MyBatis Plus 进行多表联合新建记录的过程,包括但不限于实体类设计、Mapper 定义和服务端点开发等方面的工作。
阅读全文
相关推荐


















