?
Spring中批量执行SQL语句
????????
批量执行的SQL语句有两种:
1、? 格式相同,即 SQL语句涉及到的字段名、个数和顺序都相同;
2、? 格式不同,即 SQL语句涉及到的字段名、个数不同。
?
一、??????????针对相同的SQL语句执行批量操作
?
SQL 语句如下所示,我将批量插入数据:
List<STUDENT> dtoList; //这里面存的是即将插入到student表中的数据
String kpfbSql = "Insert IntoSTUDENT(ID,NAME,AGE) Values (?,?,?)";
?
BatchPreparedStatementSettersetter = new BatchPreparedStatementSetter() {
?????????? public void setValues(PreparedStatement ps, int i) throws SQLException {
????????????? //给SQL语句的参数赋值
????????????? JXKP_KP_FBDTO dto = dtoList.get(i);
????????????? ps.setString(1, dto.getID());
????????????? ps.setString(2, dto.getNAME());
??? ?????????? ps.setString(3,dto.getAGE());
?????????? }
?????????? public int getBatchSize() {
????????????? return dtoList.size();
?????????? }
?????? };
int[] i = this.getJdbcTemplate().batchUpdate(kpfbSql,setter);
?
注:int[] i 中存放的是执行每条SQL语句时返回的成功条数的数组。因此,如果有插入失败的情况, 数组 i 中将会存在 0 这个值。给问号赋值的过程在方法内部完成。
?
?
二、??????????针对不同的SQL语句执行批量操作
?
SQL 语句如下所示,我将执行的是删除表中对应的数据:
//更新学生表中ID信息
String idSql = "Update STUDENT set ID ='" + id + "'";
//更新学生的语文成绩
String ywcjSql = "Update STUDENT set YWCJ ='60' Where ID='" + id + "'";
//更新学生的数学成绩
String sxcjSql = "Update STUDENT set SXCJ ='80' Where ID='" + id + "'";
//更新学生的英语成绩
String yycjSql = "Update STUDENT set YYCJ ='20' Where ID='" + id + "'";
?
String[] sql = new String[]{idSql, ywcjSql,sxcjSql, yycjSql};
int[] i = this.getJdbcTemplate().batchUpdate(sql);
?
注:int[] i 中存放的是执行每条SQL语句时返回的成功条数的数组。SQL语句必须是完整SQL语句,无法在后续处理中传值。
?
?
以上方法全由作者亲测,成功后上传,如有问题,请给我留言
?
?