在进行数据推送或者其他业务时,会需要进行批量操作,这个时候就可以用到了Spring的jdbcTemplate。
一、批量添加时:
//批量修改将未读取0改为读取中:1
arcCorpinfoDao.readFlagState();
//查询临时表:读取中readflag=1,数据存放List
List arcCorpInfo = arcCorpinfoDao.selectArcCorpinfoMid();
//获取系统日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String curTime = formatter.format(new Date());
//获取系统日期加时间(设置日期格式)
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String curDate = df.format(new Date());
String sql = " insert into corp_info(corp_id,corp_name,corp_type,corp_address,license_no,certificate_no,legal_name,establish_date,contact_name,contact_phone,data_version,manage_time,remark,DS_BATCH,DS_SYNC_FLAG,DS_SYNC_TIME) " + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, arcCorpInfo.get(i).getCorpno());
ps.setString(2,arcCorpInfo.get(i).getCorpname());
ps.setString(3, arcCorpInfo.get(i).getCorptype());
ps.setString(4, arcCorpInfo.get(i).getAddress());
ps.setString(5, arcCorpInfo.get(i).getLicenseno());
ps.setString(6, arcCorpInfo.get(i).getCertificateno());
ps.setString(7, arcCorpInfo.get(i).getLegalname());
ps.setString(8, arcCorpInfo.get(i).getEstablishdate());
ps.setString(9, arcCorpInfo.get(i).getContactname());
ps.setString(10, arcCorpInfo.get(i).getPhoneno());
ps.setString(11, arcCorpInfo.get(i).getRevisiondate());
ps.setString(12, arcCorpInfo.get(i).getRevisiontime());
ps.setString(13, arcCorpInfo.get(i).getRemark());
ps.setString(14, curTime);
ps.setString(15, arcCorpInfo.get(i).getOPERTYPE());
ps.setString(16,curDate);
}
@Override
public int getBatchSize() {
return arcCorpInfo.size();
}
});
System.out.println("----------------数据推送完成,总共"+arcCorpInfo.size()+"条。----------------");
} catch (Exception e) {
e.printStackTrace();
}
上面这种操作是把需要批量插入的数据,先查出来,存放到list里,然后再进行批量添加。
定义一个接口,查询需要批量添加的数据:
List selectArcCorpinfoMid();
二、批量修改
直接定义一个接口,通过sql语句。如下:
update (select * from ARC_CORPINFO_MID where READFLAG = '0') set Readflag = '1'
三、批量删除
通过Spring的jdbcTemplate进行操作,与批量修改类似。
String sql = " DELETE FROM ARC_CORPINFO_MID WHERE corp_id=?";
可以直接定义循环,查询需要删除的id,进行批量删除。