隨筆-112  評(píng)論-73  文章-0  trackbacks-0
          groovy sql 事務(wù)
          def init = { servletContext -> Sql.metaClass.withTransaction = { Closure stmt -> cacheConnection(){ connection.autoCommit = false try { stmt().each { execute(it.query, it.params) } connection.commit() } catch ( e) { connection.rollback() throw e } finally { connection.autoCommit = true } } } } def destroy = { } } Then, you may invoke it in a service: def sql = new Sql(dataSource) Connection connection = sql.createConnection(); try{ def sql2 = new Sql(connection); sql2.withTransaction { [ [query:"insert into table values (?,?,?)", params:[p1, p2, p3]], [query:"insert into table2 values (?,?,?)", params:[p4, p5, p6]] ] } }finally{ if(sql.dataSource){ connection.close(); } } There is already a JIRA requesting this to be added to Groovy: http://jira.codehaus.org/browse/GROOVY-3158. Vote it if you find this useful.


          public void ttt(){
          Sql.metaClass.useTransaction = { Closure closure ->
          java.sql.Connection conn = null
          try { conn = createConnection();
          conn.autoCommit = false;
          Sql sql2 = new Sql( conn );
          closure(sql2);
          conn.commit();
          } catch (e) {
          if(conn != null)
          conn.rollback();
          e.printStackTrace();
          throw e
          } finally {
          if ( conn != null ) {
          conn.autoCommit = true
          if ( dataSource ) { conn.close()
          }
          }
          }
          }
          }




          posted on 2009-12-18 19:53 Libo 閱讀(981) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 平武县| 临沂市| 岗巴县| 保山市| 阳高县| 临高县| 辽阳市| 济阳县| 紫金县| 罗甸县| 安西县| 东港市| 永春县| 黄山市| 五莲县| 年辖:市辖区| 巍山| 衡水市| 西盟| 广安市| 登封市| 石楼县| 杂多县| 营山县| 南陵县| 永昌县| 汨罗市| 墨江| 隆回县| 青海省| 黄浦区| 政和县| 织金县| 三门县| 重庆市| 额敏县| 寿阳县| 新安县| 古丈县| 渑池县| 神农架林区|