java_method_删除事务回滚

public String[] deleteEPGroup(String groupID, String groupName) {
String[] operRes=new String[3];
if(!StringUtils.isEmpty(groupID)) {
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录组失败";
Log.getInstance().printError(this.getClass().getName(),"删除同步通讯录组,无法获取要删除的组的GroupID");
return operRes;
}
//组名称的验证处理
if(groupName==null || "".equals(groupName)) {
//如果组名称为空就根据Id数据库中查询
Log.getInstance().printInfo(this.getClass().getName(), "删除同步通讯录组,客户端传递组名称失败,开始从数据库中查询组名称");
List<String[]> groupNameList=this.getGroupByID(groupID);
if(groupNameList==null)
{
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录组失败";
Log.getInstance().printError(this.getClass().getName(),"删除同步通讯录组,根据ID查询组名称,数据库连接为null");
return operRes;
}
String[] groupNames=groupNameList.get(0);
if(groupNames==null || groupNames.length<2) {
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录组失败";
Log.getInstance().printError(this.getClass().getName(),"删除同步通讯录组,根据ID查询组名称查询返回的数组为空或长度小于2");
return operRes;
}
if(groupNames[1]!=null &&"".equals(groupNames[1])) {
groupName=groupNames[1];
} else {
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录组失败";
Log.getInstance().printError(this.getClass().getName(),"删除同步通讯录组,根据ID查询组名称为null或者是空");
return operRes;
}

}
//groupID和groupName都不为空之后进行下一步处理
//将数据库中所的同步通讯录组查找出来
List<String[]> groupList=this.getALLGroup();
if(groupList==null){
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录"+groupName+"组失败";
Log.getInstance().printError(this.getClass().getName(),"删除同步通讯录组,查询所有的同步通讯录组发送错误");
return operRes;
}
//创建一个List存放要删除的组和该组下的所有子组的Id
List<String> groupIDList=new ArrayList<String>();
//groupIDList存放所有的要删除的组的ID也就是改组以及其所有子组
groupIDList=findAllChildrenGroupID(groupList, groupIDList, groupID);
Connection conn=null;
PreparedStatement pst=null;
Statement st=null;
try{
conn=DataBaseManage.getInstance().getConnection();
st=conn.createStatement();
conn.setAutoCommit(false);
//count是一个计数器
int count=0;
for(int i=0;i<groupIDList.size();i++){
//当组ID不为空
if(groupIDList.get(i)!=null &&!"".equals(groupIDList.get(i))){
//删除组
String deleteGroupSQL="DELETE FROM t_enterprisebookgroup WHERE GroupID='"+groupIDList.get(i)+"'";
st.addBatch(deleteGroupSQL);
//删除该组下的成员
String deleteContactSQL="DELETE FROM t_enterprisegroupmembers WHERE EnterpriseGroupID='"+groupIDList.get(i)+"'";
st.addBatch(deleteContactSQL);
count++; 
}
}
//如果批处理之中有要执行是数据执行批处理操作
if(count>0){
st.executeBatch();
}
conn.commit();
conn.setAutoCommit(true);
Log.getInstance().printInfo(this.getClass().getName(), "删除同步通讯录组"+groupName+"成功");
operRes[0]="1";
operRes[1]="删除同步通讯录组"+groupName+"成功";
operRes[2]="删除同步通讯录组"+groupName+"成功";
return operRes; 
}catch(Exception ex){
ExceptionHeading.getException(this.getClass().getName(), ex, "删除同步通讯录组,事务操作执行失败,事务开始回轨");
try{
//事务回轨
conn.rollback();
Log.getInstance().printInfo(this.getClass().getName(), "删除同步通讯录组,事务回轨成功");
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录"+groupName+"组失败";
return operRes;
} catch(Exception e){
//事务回轨失败
ExceptionHeading.getException(this.getClass().getName(), ex, "删除同步通讯录组,事务操作回轨失败");
operRes[0]="3";
operRes[1]="对不起,出现错误,请重试或联系管理员进行处理";
operRes[2]="删除同步通讯录"+groupName+"组失败";
return operRes;
}
} finally{
DataBaseManage.getInstance().closeStatement(pst);
DataBaseManage.getInstance().closeStatement(st);
DataBaseManage.getInstance().releaseConnection(conn); 
}
}
原文地址:https://www.cnblogs.com/zxxbk/p/6264737.html