SpringData JPA多表关联插入
时间: 2024-05-14 20:18:00 浏览: 88
Spring Data JPA 实现多表关联查询的示例代码
在Spring Data JPA中,多表关联插入可以通过如下方式实现:
1. 定义实体类之间的关联关系
在实体类中使用注解来定义表之间的关联关系,例如:
```
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "user")
private List<Order> orders;
}
@Entity
@Table(name = "order")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
}
```
2. 创建DTO对象
创建一个DTO对象,用于接收前端传递的参数,例如:
```
public class OrderDTO {
private Long userId;
private String orderName;
// getter and setter
}
```
3. 在Repository中定义保存方法
在Repository中定义一个保存方法,用于保存Order对象,并关联User对象,例如:
```
@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
@Transactional
@Modifying
@Query(value = "INSERT INTO `order` (`order_name`, `user_id`) VALUES (:orderName, :userId)", nativeQuery = true)
void saveOrder(@Param("orderName") String orderName, @Param("userId") Long userId);
}
```
4. 在Service中调用Repository方法
在Service中调用Repository中定义的方法,将前端传递的参数转换为实体对象,例如:
```
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private UserRepository userRepository;
@Override
public void saveOrder(OrderDTO orderDTO) {
User user = userRepository.getOne(orderDTO.getUserId());
orderRepository.saveOrder(orderDTO.getOrderName(), user.getId());
}
}
```
这样就可以实现多表关联插入了。
阅读全文