如何在springjdbc中使用jdbctemplate对map< string,string>执行批更新?

nx7onnlm  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(251)

我有一个bean,它有两个字段1: Map<String,String> client 2: String target 我必须把这个bean写入数据库。我有个问题 "INSERT INTO my_table(client_key ,client_value ,target) VALUES(?,?,?)" 所以每个键值对和字符串目标都应该插入到表中。
我该如何有效地做到这一点?批量更新文档仅显示为使用列表写入。
编辑:以下是我迄今为止尝试过的。
这是我的bean类:

public class FinalBean {

    private Map<String,String> client;
    private String target;

    public Map<String, String> getClient() {
        return client;
    }
    public void setClient(Map<String, String> client) {
        this.client = client;
    }
    public String getTarget() {
        return target;
    }
    public void setTarget(String target) {
        this.target = target;
    } 

}

这就是我试图编写bean的方式。

public void saveFinalBean(final FinalBean bean)
    {

        String insert_query="INSERT INTO my_table(client_key ,client_value ,target) VALUES(?,?,?)";

        final List< Entry<String,String> > list= getMapAsEntryList(bean.getClient());

        int[] updateCounts = jdbcTemplate.batchUpdate(insert_query,
                new BatchPreparedStatementSetter() {

                    public void setValues(PreparedStatement ps, int i) throws SQLException {
                        Entry<String,String> entry = list.get(i);
                        ps.setString(1, entry.getKey());
                        ps.setString(2, entry.getValue());
                        ps.setString(3, bean.getTarget());
                    }

                    public int getBatchSize() {
                        return list.size();
                    }
                });

    }

 private List<Entry<String,String>> getMapAsEntryList(Map<String, String> client) {
            List<Entry<String,String>> result=new ArrayList<Entry<String,String>>();

             for(Entry<String,String> entry : client.entrySet())
             {
                 result.add(entry);
             }

            return result;

        }

    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题