Oracle database-side test environment see: http://www.cnblogs.com/yshyee/p/4392328.html
Packagecom.mw.utils;Importjava.sql.Connection;Importjava.sql.SQLException;ImportJava.util.logging.Level;ImportJava.util.logging.Logger;/** * @authory * @date 2015-4-4 13:33:02 *@versionV1.0 * @desc Connection Transaction Management * Usage: * (1) First Get Connection * (2) Open transaction * () for Business Processing * (3) COMMIT TRANSACTION * (4) exception ROLLBACK TRANSACTION * (5) Close link*/ Public Final classTransactionManager {/*** Define local thread variables for saving connection*/ Private Static FinalThreadlocal<connection> connthreadlocal =NewThreadlocal<connection>(); PrivateTransactionManager () {}/*** Using internal classes to implement a single case*/ Private Static classtransactionmanagerholder{Private Static FinalTransactionManager instance =NewTransactionManager (); } Public StaticTransactionManager getinstance () {returntransactionmanagerholder.instance; } /*** 1: Get the database connection resource from the current thread local variable *@return */ PublicConnection Get () {Connection conn=Connthreadlocal.get (); if(NULL==conn) {Conn=jdbcutil.getconnection (); Connthreadlocal.set (conn); } returnConn; } /*** 2: Open transaction *@paramConn*/ Public voidBeginTransaction (Connection conn) {Try { if(NULL!=conn) { if(Conn.getautocommit ()) {Conn.setautocommit (false); } } }Catch(SQLException ex) {Logger.getlogger (TransactionManager.class. GetName ()). log (Level.severe,NULL, ex); } } /*** 3: Commit TRANSACTION *@paramConn*/ Public voidCommitTransaction (Connection conn) {Try { if(NULL!=conn) { if(!Conn.getautocommit ()) {Conn.commit (); } } }Catch(SQLException ex) {Logger.getlogger (TransactionManager.class. GetName ()). log (Level.severe,NULL, ex); } } /*** 4: ROLLBACK TRANSACTION *@paramConn*/ Public voidRollbackTransaction (Connection conn) {Try { if(NULL!=conn) { if(!Conn.getautocommit ()) {Conn.rollback (); } } }Catch(SQLException ex) {Logger.getlogger (TransactionManager.class. GetName ()). log (Level.severe,NULL, ex); } } /*** 5: Close the link to remove the database connection from the current thread local variable *@paramConn*/ Public voidClose (Connection conn) {jdbcutil.release (conn); Connthreadlocal.remove (); } }
Test:
Packagecom.mw.test;ImportCom.mw.utils.TransactionManager;Importjava.sql.CallableStatement;Importjava.sql.Connection;Importjava.sql.SQLException;Importjava.sql.Types;Importjava.util.List;ImportJava.util.Map;ImportJava.util.logging.Level;ImportJava.util.logging.Logger;ImportOrg.apache.commons.dbutils.QueryRunner;ImportOrg.apache.commons.dbutils.handlers.MapHandler;ImportOrg.apache.commons.dbutils.handlers.MapListHandler;/** * @authory * @date 2015-4-4 12:34:05 *@version1.0 * @desc*/ Public classTest { Public Static voidMain (string[] args) {queryrunner qr=NewQueryrunner (); Connection Conn=transactionmanager.getinstance (). get (); Transactionmanager.getinstance (). BeginTransaction (conn); intAge = 10; Try{CallableStatement cs= Conn.preparecall ("{Call Pack_user.p_user_select (?,?)}"); Cs.setint (1, age); Cs.registeroutparameter (2, Types.varchar); Cs.execute (); String succ= Cs.getstring (2); if("T". Equalsignorecase (SUCC)) {String SQL= "SELECT * FROM Tmp_yshy"; List<map<string, object>> list = qr.query (conn, SQL,NewMaplisthandler ()); for(Map map:list) {System.out.println ("C1:" +map.get ("C1") + ", C2:" +map.get ("C2")); } }Else{System.out.println ("SUCC:" +succ); } transactionmanager.getinstance (). CommitTransaction (conn); } Catch(SQLException ex) {transactionmanager.getinstance (). RollbackTransaction (conn); Logger.getlogger (Test.class. GetName ()). log (Level.severe,NULL, ex); } finally{transactionmanager.getinstance (). Close (conn); } }}
Encapsulate JDBC Transaction operations, execute stored procedure tests