在service方法上用注解@Transactional,不要在该方法上捕获异常,在调用方捕获,否则不触发事务机制。
@Override
@Transactional
public int inputProviceData(MultipartFile file)throws Exception {
try {//不触发事务机制,需将try...catch去掉,在controller中捕获
ctyProvinceMapper.deleteAll();
Sheet sheet = ExcelFileUtil.getSheet(file);
for(Row row : sheet){
if(row.getRowNum() == 0){
continue;
}
Cell cell0 = row.getCell(0);
cell0.setCellType(Cell.CELL_TYPE_STRING);
String provinceId = cell0.getStringCellValue();
String provinceName = row.getCell(1).getStringCellValue();
CtyProvince ctyProvince = new CtyProvince();
ctyProvince.setProvinceId(Long.valueOf(provinceId));
ctyProvince.setProvinceName(provinceName);
ctyProvinceMapper.insert(ctyProvince);
}
}catch (Exception e){
e.printStackTrace();
}
return 0;
}