springboot jpa 两个数据表,一对多,联表插入、查询 详细代码
时间: 2024-02-28 08:52:57 浏览: 28
好的,下面是示例代码:
**第一个数据表:User**
```java
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Order> orders = new ArrayList<>();
// 省略 getter 和 setter 方法
}
```
**第二个数据表:Order**
```java
@Entity
@Table(name = "order")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
// 省略 getter 和 setter 方法
}
```
**插入数据**
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void saveUser() {
User user = new User();
user.setName("张三");
Order order1 = new Order();
order1.setName("订单1");
order1.setUser(user);
Order order2 = new Order();
order2.setName("订单2");
order2.setUser(user);
user.getOrders().add(order1);
user.getOrders().add(order2);
userRepository.save(user);
}
}
```
**查询数据**
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User getUser(Long id) {
return userRepository.findById(id).orElse(null);
}
}
```
在上面的示例中,User 和 Order 是一对多的关系,User 拥有多个 Order。在 User 实体类中,使用 @OneToMany 注解来建立一对多的关系,mappedBy 属性指定了 Order 实体类中的 user 属性来维护关系,cascade 属性设置了级联操作,orphanRemoval 属性设置了当 Order 实体类中的 user 属性为 null 时,该 Order 实例会被删除。
在 Order 实体类中,使用 @ManyToOne 注解来建立多对一的关系,fetch 属性设置了懒加载,JoinColumn 属性指定了外键的名称。
在插入数据时,先创建 User 实例,然后创建多个 Order 实例,并将这些 Order 实例的 user 属性设置为 User 实例,最后将 Order 实例添加到 User 实例的 orders 属性中,保存 User 实例即可。
在查询数据时,直接使用 UserRepository 的 findById 方法即可获取到 User 实例,该实例的 orders 属性中包含了多个 Order 实例。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)