使用jpa连接mysql数据库,其中主表内有属性id,name,gander,子表有id,a1,a2,a3,a4,a5前端传来数组,让库中的主表插入数组中的一条数据,让子表插入数组中的10条数据,
时间: 2024-05-04 20:20:17 浏览: 76
首先,在你的Java项目中引入JPA的依赖,然后配置好数据源。这里以Spring Boot为例,配置数据源可以在application.properties或application.yml中进行配置。
接着,定义实体类,分别代表主表和子表:
```java
@Entity
@Table(name = "main_table")
public class MainTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String gender;
// 省略 getter/setter
}
@Entity
@Table(name = "sub_table")
public class SubTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String a1;
private String a2;
private String a3;
private String a4;
private String a5;
// 省略 getter/setter
}
```
然后定义主表和子表之间的关系:
```java
@Entity
@Table(name = "main_table")
public class MainTable {
// 省略其他属性
@OneToMany(mappedBy = "mainTable", cascade = CascadeType.ALL)
private List<SubTable> subTables;
// 省略 getter/setter
}
@Entity
@Table(name = "sub_table")
public class SubTable {
// 省略其他属性
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "main_table_id")
private MainTable mainTable;
// 省略 getter/setter
}
```
这里使用@OneToMany和@ManyToOne注解表示主表和子表之间的一对多关系。
接着,定义主表和子表的Repository:
```java
@Repository
public interface MainTableRepository extends JpaRepository<MainTable, Long> {
}
@Repository
public interface SubTableRepository extends JpaRepository<SubTable, Long> {
}
```
最后,在Service中编写插入数据的方法:
```java
@Service
public class MyService {
@Autowired
private MainTableRepository mainTableRepository;
@Autowired
private SubTableRepository subTableRepository;
public void insertData(String name, String gender, String[] subData) {
// 插入主表数据
MainTable mainTable = new MainTable();
mainTable.setName(name);
mainTable.setGender(gender);
mainTableRepository.save(mainTable);
// 插入子表数据
List<SubTable> subTables = new ArrayList<>();
for (String sub : subData) {
SubTable subTable = new SubTable();
subTable.setA1(sub);
subTable.setA2(sub);
subTable.setA3(sub);
subTable.setA4(sub);
subTable.setA5(sub);
subTable.setMainTable(mainTable);
subTables.add(subTable);
}
subTableRepository.saveAll(subTables);
}
}
```
这里的insertData方法接收参数name、gender和subData,分别表示主表的name、gender属性和子表的a1、a2、a3、a4、a5属性数组。在方法中,先插入主表数据,然后根据主表的id插入子表数据。注意子表数据需要设置主表的关联。
阅读全文