有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring JDBC中使用JdbcTemplate对Map<String,String>执行批更新?

我有一个有两个字段的豆子 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;
        
        }
    
    }

共 (0) 个答案