廢話依舊不多說,直接上**
dao層
介面
public
inte***ce
accountdao
實現類@repository
("accountdao"
)public
class
accountdaoimpl
implements
accountdao
public
void
deteletaccount
(int id)
throws sqlexception
public
void
updateaccount
(account account)
throws sqlexception
public account findbyid()
public list
findall
(account account)
@override
public account findbyname
(string name)
throws sqlexception
else
}}
domain層
public
class
account
public
intgetid()
public
void
setid
(int id)
public string getname()
public
void
setname
(string name)
public double getmoney()
public
void
setmoney
(double money)
}
service層
介面
public inte***ce accountservice
實現類@service("accountservice")
public class accountserviceimpl implements accountservice
public void deleteaccount(int id) throws sqlexception
public void transfor(string outacccount, string inaccount, double money) throws sqlexception catch (exception e)finally
//// }
account name = accountdao.findbyname(outacccount);
account name1 = accountdao.findbyname(inaccount);
system.out.println(name);
//轉賬
name.getmoney();
name.setmoney(name.getmoney() - 500);
// system.out.println(10/0);
name1.setmoney(name1.getmoney() + 500);
//更新money
accountdao.updateaccount(name);
accountdao.updateaccount(name1);
}}
工具類utils
/**
* @program: spring_03
* @description: 獲取連線的工具類
* @author: lhx
* @create: 2019-10-18 15:31
**/@component
("connectionutils"
)public
class
connectionutils
//獲取連線
public connection getconnection()
}catch
(sqlexception e)
return connection;}}
/** * @program: spring_03
* @description: 管理事務txmannger 事務管理器
* @author: lhx
* @create: 2019-10-18 16:01
**/@component
("transactionmanager"
)@aspect
public
class
transactionmanager
// @afterreturning("execution(* com.ityouxin.service.serviceimpl.*.*(..))")
public
void
commit()
throws sqlexception
// @afterthrowing("execution(* com.ityouxin.service.serviceimpl.*.*(..))")
public
void
rollback()
throws sqlexception
// @after("execution(* com.ityouxin.service.serviceimpl.*.*(..))")
public
void
close()
throws sqlexception
object object=null;
@around
("execution(* com.ityouxin.service.serviceimpl.*.*(..))"
)public object arround
(proceedingjoinpoint pjp)
throws sqlexception
catch
(sqlexception e)
catch
(throwable throwable)
finally
return object;
}}
測試類
*
@program
: spring_03
*@description
: 測試方法
*@author
: lhx
*@create
:2019-10
-1809:
44**/
@contextconfiguration
(classes=
)@runwith
(springjunit4classrunner.
class
)public
class
accountservicetest
@test
public
void
testtranfor()
catch
(sqlexception e)
}@test
public
void
testfindbyname()
catch
(sqlexception e)
}}
Spring 基於AOP的事務控制
事務是我們在進行資料操作的時候,要操作的事情,是乙個完整的單元,不可再分的。它包括幾個特性 原子性 一致性 可見性 隔離性 在spring容器中,事務是被封裝到事務管理器中,spring事務管理器的介面是org.springframework.transaction.platformtransact...
Spring 宣告式事務aop
我們故意在乙個方法裡先寫乙個插入,然後在寫乙個刪除語句。其中刪除語句的sql表達錯誤。雖然會報錯 告訴你刪除的sql語句錯誤,但是不會告訴你 插入操作成功了。也就是說 雖然程式因為錯誤沒有執行完,但是有一部分操作還是成功了。明顯不滿足我們的acid原則 原子性 一致性 隔離性 永續性 首先放上myb...
aop與spring事務的異常機制
今天在做自己的專案的時候,明明在配置檔案中配置了事務管理機制,然後想測試一下事務是否生效,一直不生效 後來發現原來是因為我自己定義的日誌切面把異常抓取了,但是沒有丟擲去 後來就把異常丟擲去就行了,最重要的是 切面裡面丟擲的異常必須是spring註解抓取的子類或者等於它,具體的看下 component...