[英]How to insert into database from List<Object> (nested) using JDBC
我有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());
這種方法的問題是我無法保存Item和工作流表。 我不確定如何在JDBC中實現。 我們正在使用的數據庫是Postgresql。
當我使用JPA時,這要容易得多,但由於某些限制,我們不得不切換到JDBC。 對此,我們將給予任何幫助。
要在JDBC上插入List
,您需要使用循環,然后調用addBatch() 。
對於Item
(假設有一個稱為stream
的StreamsID
),應該是這樣的:
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.