小弟,近期在做定时任务时发现, ,从数据库中select出来了10条数据,其中有一条是有错误信息的。
保存到了list中,,向另一个库插入的时候,这条错误数据可能在10条中的第5的位置,到值6-10的数据无法插入,源码如下
@Override
public String getAppData() {
logger.info("开始抓取ME金融端【客户】信息");
List<Map> list = this.findCusData();
if(list.size() > 0){
for(int i = 0; i < list.size(); i++){
logger.info("抓取到的App端客户信息的id为:" + list.get(i).get("ID").toString());
try {
//因为App端和综合端数据字典不能对应,所以需要在中间代码中进行转换
String sex = "1";
String idTypeCd = "1";
if("2".equals(list.get(i).get("SEX"))){//App端为2
sex = "0";//综合端女为0
}
if("1".equals(list.get(i).get("IDTYPECD"))){//App端身份证为1
idTypeCd = "0";//综合端身份证为0
}
//插入客户表的sql语句
String sql = "insert into me_mid_customer_info "
+ "(id,"
+ "ch_name,"
+ "sex_cd,"
+ "id_type_cd,"
+ "id_number,"
+ "phone_number,"
+ "data_handle_date,"
+ "handle_terrace,"
+ "flag,"
+ "self_code,"
+ "other_code,"
+ "me_cus_id ) VALUES "
+ "(seq_me_mid_customer_info.NEXTVAL,'" + getNull(list.get(i).get("NAME"))
+ "','" + sex
+ "','" + idTypeCd
+ "','" + getNull(list.get(i).get("IDNUMBER"))
+ "','" + getNull(list.get(i).get("PHONENUMBER"))
+ "','" + sd.format(System.currentTimeMillis())
+ "','" + "0"
+ "','" + "0"
+ "','" + getNull(list.get(i).get("CUSREFERRALCODE"))
+ "','" + getNull(list.get(i).get("INVREFERRALCODE"))//这里要根据后续推荐码编码规则进行修改
+ "','" + getNull(list.get(i).get("ID"))
+ "')";
//修改App端抓取数据后的数据状态,避免重复抓取
String sqlUpdateCus = "update me_customer_info set flag='1' where flag = '0'"
+ "and id='"+getNull(list.get(i).get("ID"))+"'";
logger.info("插入【客户】到中间库的sql:"+sql);
logger.info("修改ME金融端【客户】数据状态的sql:"+sqlUpdateCus);
//获取插入客户的结果集
jdbcDao1.execute(sql);
logger.info("【SUCC】执行【客户】数据插入中间表成功!");
//执行修改语句
jdbcDao.execute(sqlUpdateCus);
logger.info("【SUCC】修改Me金融端【客户】数据成功");
} catch (Exception e) {
logger.info("【ERROR】执行数据插入中间表报错!");
e.printStackTrace();
}
}
logger.info("获取数据数量为:"+list.size()+"条");
return "success";
}else{
logger.info("获取数据数量为:0条");
return "empty";
}
}
上述代码中,使用了for循环对list进行遍历,并向另一个库插入,如果第5条数据有误, 那么就会抛出异常, ,6-10条数据就无法插入,,,,那么 如何能不受错误数据影响,,插入9条数据,1条错误数据不插入呢?
问过大牛们才知道,,其实,在catch(){ }中 加continue; 这个就可以了。。
我真是如遭雷劈,continue原本功能就是终止当前循环, ,执行下次循环。我竟然没有想起来。。。。
以后,有相同需求的童鞋们, ,可以使用哦