本个案例是通过Spring jdbc 动态的将参数Insert 至对应的表栏位,但感觉写的不是很好,
想请教一下大家通过Spring jdbc方式是否有更高效的写法?
----------------------------------------------------------------------------
//指定基础信息
Object[] baseInfo=new Object[]{"张三","28","天津"};
StringBuffer sql_col=new StringBuffer("INSERT INTO table1(name,age,add");
StringBuffer sql_value=new StringBuffer(" values(?,?,?");
//paramMap为动态的信息,通过paramMap动态对应至表栏位,拼成全SQL
Map paramMap=new HashMap();
paramMap.put("Col_1", "Col1_Value");
paramMap.put("Col_2", "Col2_Value");
paramMap.put("Col_3", "Col3_Value");
paramMap.put("Col_4", "Col4_Value");
paramMap.put("Col_5", "Col5_Value");
Object[] ParamInfo=new Object[paramMap.size()];
int circleNum=0;
for (Iterator it = paramMap.keySet().iterator();it.hasNext();circleNum++)
{
Object key = it.next();
sql_col.append(","+key);
sql_value.append(",?");
ParamInfo[circleNum]=paramMap.get(key);
}
sql_col.append(")");
sql_value.append(")");
//将变基础信息和动态信息数组整合成一个完成的变量数据数组
Object[] result=new Object[baseInfo.length+ParamInfo.length];
System.arraycopy(baseInfo,0,result,0,baseInfo.length);
System.arraycopy(ParamInfo,0,result,baseInfo.length,ParamInfo.length);
//拼成一个完整个SQL
String sql=sql_col.toString()+sql_value.toString();
System.out.println("sql:"+sql);
for (int i=0;i<ParamInfo.length;i++)
{
System.out.println("ParamInfo["+i+"]:"+ParamInfo[i]);
}
//执行Insert
return getJdbcTemplate().update(sql, result);
------解决思路----------------------
for (Iterator it = paramMap.keySet().iterator();it.hasNext();circleNum++)
{
Object key = it.next();
sql_col.append(","+key);
sql_value.append(",?");
ParamInfo[circleNum]=paramMap.get(key);
}
这里是有问题的,因为HashMap里面的数据是没有顺序的,所以你每次循环拼出的sql都不一样