Spring 中批量执行 SQL 语句
批量执行的 SQL 语句有两种:
1、 格式相同,即 SQL 语句涉及到的字段名、个数和顺序都相同;
2、 格式不同,即 SQL 语句涉及到的字段名、个数不同。
一、 针对相同的 SQL 语句执行批量操作
SQL 语句如下所示,我将批量插入数据:
List< STUDENT > dtoList; // 这里面存的是即将插入到 student 表中的数据
String kpfbSql = "Insert Into STUDENT(ID,NAME,AGE) Values (?,?,?)" ;
BatchPreparedStatementSetter setter = 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 语句,无法在后续处理中传值。
以上方法全由作者亲测,成功后上传,如有问题,请给我留言