Spring JDBC事务管理例子
程序员文章站
2022-07-13 21:17:29
...
public Boolean update(Map paraMap) throws Exception{
String userId = paraMap.get("userId").toString();
List entitledUserList = (List)paraMap.get("entitledUserList");
StringBuffer deleteQuery = new StringBuffer();
deleteQuery.append("delete from TblPnlSalesEntitlement ");
deleteQuery.append("where userId ='"+userId);
Session session = null;
Connection con = null;
Statement stmt = null;
Boolean rtn = false;
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
session = getDaoService().getHibernateTemplate().getSessionFactory().openSession();
con = session.connection();
con.setAutoCommit(false);
PreparedStatement pqs = con.prepareStatement(con.nativeSQL("SET CHAINED OFF"));
pqs.execute();
stmt = con.createStatement();
stmt.addBatch(deleteQuery.toString());
Iterator entitledUserIt = entitledUserList.iterator();
while(entitledUserIt.hasNext()){
String entitledUser = entitledUserIt.next().toString();
StringBuffer insertQuery = new StringBuffer();
insertQuery.append("insert into TblPnlSalesEntitlement(userId,entitledUserId) ");
insertQuery.append("values('"+userId+"','"+entitledUser"');
stmt.addBatch(insertQuery.toString());
}
stmt.executeBatch();
txManager.commit(status);
rtn = true;
}catch (Exception e) {
txManager.rollback(status);
e.printStackTrace();
throw new Exception(e);
}finally{
if(con!=null)
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
throw new Exception(e);
}
if(session!=null)
session.close();
}
return rtn;
}
上一篇: HTTPS
推荐阅读