golang中如何实现db事务的统一封装
导读:本文共1475字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 事务处理的流程示例database:=db.DBtx,err:=database.Begin()iferr!=nil{returnerr}stmt,err:=tx.Prepare(sqlQuery)iferr!=nil{tx.Rollback()returnerr}_,err=stmt.Exec(paras...)iferr!=nil{t... ...
目录
(为您整理了一些要点),点击可以直达。事务处理的流程示例
以上是我们使用事务时的一般操作,如果每做一次事务的操作均要进行重新写一遍代码岂不是很麻烦,尤其是出错时,Rollback需要多次在不同错误的地方的进行调用处理。
采用defer处理Rollback
无论成功与否,均进行Rollback操作,只是有点影响,如果成功还调用Rollback的话,将会报错。虽然可以忽略,但作为程序员,有必要进一步调整。
根据执行结果来选择执行Rollback,避免无效使用。
如此,我们就可以根据事务的执行结果决定是否Rollback了。
封装,以上代码本身就具有极大的普适性,因此,我们抽出通用的参数,将此过程封装成一个func,以后就可以直接调用了。
封装后我们可以如下使用:
封装后是不是很简洁啊?
在一个事务中可能会出现多个SELECT、UPDATE等操作,以上封装仅处理了一种操作,还不能满足我们的实际需求,因此需要更进一步封装。
在handle func内可以直接使用事务tx进行增删改查。
golang中如何实现db事务的统一封装的详细内容,希望对您有所帮助,信息来源于网络。