gpt4 book ai didi

java - 如何使用 JDBC 从 List(嵌套)插入数据库
转载 作者:行者123 更新时间:2023-11-29 14:15:59 24 4
gpt4 key购买 nike

我有 3 个不同的表,我想在其中插入 JSON 格式的数据。以下是我的数据的结构。

流类:

public class StreamsID {
private Long id;
private Long campaign_id;
private Long credential_id;
private String user_id;
private String custom_name;
private List<Item> items;
}

项目类别:

public class Item {
private Long stream_id;
private String stream_item_date;
private String channel;
private List<Workflow> workflow;
private List<Responses> responses;

工作流类:

public class Workflow {
public static final String FIND_ALL = "findAll";
private Long id;
private User actor;
private User assignee;
private String date;
private String team;
private String action;

我正在使用 PreparedStatement 插入数据:

PreparedStatement statement = connection.prepareStatement("INSERT INTO public.streams(" +
"stream_id, stream_campaign_id," +
"stream_user_id, stream_custom_name) " +
"VALUES (?, ?, ?, ?);");
statement.setLong(1,stream.getId());
statement.setLong(2,stream.getCampaign_id());
statement.setLong(3,stream.getCredential_id());
statement.setString(4,stream.getUser_id());
statement.setString(5,stream.getCustom_name());

这种方法的问题是我无法保存项目和工作流程表。我不确定如何在 JDBC 中实现它。我们使用的数据库是 Postgresql。

当我使用 JPA 时,这要容易得多,但由于某些限制,我们不得不切换到 JDBC。非常感谢您对此的任何帮助。

最佳答案

要在 JDBC 上插入 List,您需要使用循环,并调用 addBatch() .
对于 Item(假设有一个名为 streamStreamsID),它应该是这样的:

PreparedStatement statement = connection.prepareStatement("INSERT INTO item(stream_id,"+
"stream_item_date, channel) "+
"VALUES (?, ?, ?);");
for(Item item : stream.getItems()){
statement.setLong(1, item.getStream_id());
statement.setString(2, item.getStream_item_date());
statement.setString(3, item.getChannel());
statement.addBatch();
}

关于java - 如何使用 JDBC 从 List<Object>(嵌套)插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923121/

24 4 0