簡體   English   中英

如何從列表插入數據庫 <Object> (嵌套)使用JDBC

[英]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 (假設有一個稱為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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM