Spring中批量执行SQL语句

Spring 中批量执行 SQL 语句

        

批量执行的 SQL 语句有两种:

1、  格式相同,即 SQL 语句涉及到的字段名、个数和顺序都相同;

2、  格式不同,即 SQL 语句涉及到的字段名、个数不同。

 

一、           针对相同的 SQL 语句执行批量操作

 

SQL 语句如下所示,我将批量插入数据:

List< STUDENT > dtoList; // 这里面存的是即将插入到 student 表中的数据

扫描二维码关注公众号,回复: 663123 查看本文章

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

 

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

 

猜你喜欢

转载自xuzonghua-itianyi-com.iteye.com/blog/1695266