当前位置: 代码迷 >> SQL >> Spring中批量施行SQL语句
  详细解决方案

Spring中批量施行SQL语句

热度:99   发布时间:2016-05-05 12:57:58.0
Spring中批量执行SQL语句

?

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语句,无法在后续处理中传值。

?

?

以上方法全由作者亲测,成功后上传,如有问题,请给我留言

?

?

  相关解决方案