package com.ycsoft.daos.core.setter;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
/**
* <p> 实现<tt>Spring</tt>的参数接口设置,<p>
* @see org.springframework.jdbc.core.BatchPreparedStatementSetter
* @author hh
*/
public class BatchPreparedStatementSetterImpl extends ParameterSetter
implements BatchPreparedStatementSetter {
private int size;
private List<Object[]> values ;
/**
* <p> SQL结构中有多个参数时,将对应的参数位置封装置数组中</p>
* @param values 所传递的参数行、列的格式
*/
public BatchPreparedStatementSetterImpl(List<Object[]> values){
size = values.size() ;
this.values = values ;
}
/**
* <p> 如果批量处理中只有一个参数,使用该函数</p>
* @param values
*/
public BatchPreparedStatementSetterImpl(Object[] values){
List<Object[]> params = new ArrayList<Object[]>();
for (Object o : values) {
params.add(new Object[]{ o });
}
size = params.size() ;
this.values = params ;
}
/**
* 获取批量执行的命令数
*/
public int getBatchSize() {
return size;
}
/**
* 将对应的行数的参数封装进去
*/
public void setValues(PreparedStatement ps, int row) throws SQLException {
setParameters(ps, values.get( row ));
}
}