使用Jpa连接mysq数据库,其中主表内有属性id,name, 子表有id,main_id,medicine 。前端传来数组,让库中的主表插入数组中的一条数据,让子表插入数组中的10条数据,并差分层级为Controller层,service层,impl层
时间: 2024-05-04 08:19:57 浏览: 86
首先,需要定义两个实体类,一个是主表实体类,一个是子表实体类:
```java
@Entity
@Table(name = "main_table")
public class MainTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// 省略 getter 和 setter 方法
}
@Entity
@Table(name = "sub_table")
public class SubTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "main_id")
private MainTable mainTable;
private String medicine;
// 省略 getter 和 setter 方法
}
```
其中,子表实体类使用了 `@ManyToOne` 注解,表示多个子表对应一个主表。
然后,需要定义两个 DAO 接口,一个是主表 DAO 接口,一个是子表 DAO 接口:
```java
public interface MainTableDao extends JpaRepository<MainTable, Long> {
}
public interface SubTableDao extends JpaRepository<SubTable, Long> {
}
```
接着,定义两个 Service 接口和实现类,一个是主表 Service,一个是子表 Service:
```java
public interface MainTableService {
void saveMainTableAndSubTables(MainTable mainTable, List<SubTable> subTables);
}
@Service
public class MainTableServiceImpl implements MainTableService {
@Autowired
private MainTableDao mainTableDao;
@Autowired
private SubTableDao subTableDao;
@Override
public void saveMainTableAndSubTables(MainTable mainTable, List<SubTable> subTables) {
MainTable savedMainTable = mainTableDao.save(mainTable);
for (SubTable subTable : subTables) {
subTable.setMainTable(savedMainTable);
}
subTableDao.saveAll(subTables);
}
}
public interface SubTableService {
void saveSubTable(SubTable subTable);
}
@Service
public class SubTableServiceImpl implements SubTableService {
@Autowired
private SubTableDao subTableDao;
@Override
public void saveSubTable(SubTable subTable) {
subTableDao.save(subTable);
}
}
```
最后,在 Controller 层调用 Service 层方法即可:
```java
@RestController
@RequestMapping("/api")
public class MainTableController {
@Autowired
private MainTableService mainTableService;
@Autowired
private SubTableService subTableService;
@PostMapping("/mainTable")
public void saveMainTableAndSubTables(@RequestBody MainTableAndSubTablesDTO dto) {
MainTable mainTable = new MainTable();
mainTable.setName(dto.getMainName());
mainTableService.saveMainTableAndSubTables(mainTable, dto.getSubTables());
}
@PostMapping("/subTable")
public void saveSubTable(@RequestBody SubTableDTO dto) {
SubTable subTable = new SubTable();
subTable.setMedicine(dto.getMedicine());
MainTable mainTable = new MainTable();
mainTable.setId(dto.getMainId());
subTable.setMainTable(mainTable);
subTableService.saveSubTable(subTable);
}
}
```
其中,`MainTableAndSubTablesDTO` 和 `SubTableDTO` 分别是前端传来的数据的 DTO 类。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)