1、java只要把事务操作设置为不自动提交,通过手动提交就能实现事务的处理,代码如下:
package com.oracle;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* java事务控制
* @author Administrator
*
*/
public class TestTrans {
/**
* @param args
*/
public static void main(String[] args) {
Connection ct = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
ct = DriverManager.getConnection("jdbc:oracle:thin:@172.17.40.227:1521:orcl","scott","tiger");
Statement sm = ct.createStatement();
//加入事务处理
ct.setAutoCommit(false);
sm.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");
//int i = 7/0;
sm.executeUpdate("update emp set sal=sal+100 where ename='SMITH'");;
//提交事务
ct.commit();
}catch(Exception e){
//如果发生异常就回滚
try{
ct.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
e.printStackTrace();
}finally{
sm.close();
ct.close();
}
}
}
2、ibatis主要通过SqlMapClient类中的startTransaction()、commitTransaction()、endTransaction()、rollbackTransaction()这四个方法来实现事务的开始、提交、结束和回退。例子代码如下:
private Reader reader = new Resources.getResourceAsReader(
"com/ibatis/example/sqlMapconfig.xml");
private SqlMapClient sqlMap = XmlSqlMapBuilder.buildSqlMap(reader);
public updateItemDescription (String itemId, String newDescription) throws SQLException {
try {
sqlMap.startTransaction ();
Item item = (Item) sqlMap.queryForObject ("getItem", itemId);
item.setDescription (newDescription);
sqlMap.update ("updateItem", item);
sqlMap.commitTransaction ();
} finally {
sqlMap.endTransaction ();
}
}
说明:
public class A {
method ma1
method ma2
method ma3
}
public class B{
A a = new A();
method mb1(){
ma1
}
}
public class C{
method mc1
}
现在得到了C的对象,想要使用A对象的ma3方法
做法是 在 b类中增加 一个方法 包含ma3 mb3
这样 在c类里面就能定义一个 包含mb3的方法即可。