事務完成轉賬功能。

2022-07-11 06:48:10 字數 2089 閱讀 7219

事務的特性acid

原子性(atomicity):指事務是乙個不可分割的工作單位,事務中的操作。要麼都發生,要麼都不發生。

一致性(consistency):乙個事務中,事務前後資料的完整性必須保持一致。

隔離性(isolation):是指多個使用者併發訪問資料庫時,乙個使用者的 事務不能被其它使用者的事務所干擾,多個併發事務之間資料要相互隔離。

永續性(durability):指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影

什麼是事務

一件事情有n個組成單元 要不這n個組成單元同時成功 要不n個單元就同時失敗。就是將n個組成單元放到乙個事務中

2.mysql的事務

預設是自動事務:

執行sql語句:executeupdate() ---- 每執行一次executeupdate方法就代表事務自動提交。

通過jdbc的api手動事務:

開啟事務:conn.setautocomnmit(false);

提交事務:conn.commit();

回滾事務:conn.rollback();

注意:控制事務的connnection必須是同乙個

執行sql的connection與開啟事務的connnection必須是同乙個才能對事務進行控制

四、 dbutils事務操作

queryrunner

有參構造:queryrunner runner = new queryrunner(datasource datasource);

有參構造將資料來源(連線池)作為引數傳入queryrunner,queryrunner會從連線池中獲得乙個資料庫連線資源運算元據庫,所以直接使用無connection引數的update方法即可運算元據庫

無參構造:queryrunner runner = new queryrunner();

無參的構造沒有將資料來源(連線池)作為引數傳入queryrunner,那麼我們在使用queryrunner物件運算元據庫時要使用有connection引數的方法

簡單來說,當我們的sql需要進行事務控制使用無參構造,不需要事務控制使用有參構造。

第一步:先寫乙個jsp

第二步:書寫web層,負責獲取頁面的資料,呼叫service層的資料web層是乙個servlet,需要自行建乙個servlet

}第三步:書寫dao層,處理資料庫的資料,並反饋給service層

public

void

out(connection conn,string out, double

money) throws sqlexception

public

void

in(connection conn,string in, double

money) throws sqlexception

第四步:書寫service層

public boolean tranfer(string out, string in, double money) catch (exception e) catch (sqlexception e1)

e.printstacktrace();

}finally catch (sqlexception e)

}    

return istranfersuccess;

}

事務(轉賬功能)

轉賬時必須雙方同時成功,要麼同時失敗,就是把雙方組成單元放到事務中 1 顯示的開啟乙個事務 start transaction 2 事務提交 commit代表從開啟事務到事務提交 中間的所有的sql都認為有效 真正的更新資料庫 3 事務的回滾 rollback 代表事務的回滾 從開啟事務到事務回滾 ...

事務例子 模擬轉賬

需求 需求 有乙個轉賬功能 service transfer to,from,money reducebalance to,money 模擬錯誤i 5 0 increasebalance from,money dao reducebalance userid,money increasebalanc...

mysql模擬事務轉賬

測試事務 建立表create table account id int 3 notnull auto increment name varchar 30 not null money decimal 9 2 not null primary key id engine innodb default ...