一.需求分析
- 商品修改涉及到两个表的修改:tb_item和tb_item_desc的修改
- 本小节使用事务完成数据的修改
- 需要改写DBUtils.go中代码,改写后Dao层代码直接调用PrepareWithTx()函数,在Service层中开启事务,提交事务
二.代码演示
//数据库操作的三个对象var ( db *sql.DB stmt *sql.Stmt rows *sql.Rows tx *sql.Tx)//打开数据库连接,不要忘记导入驱动包func OpenConnWithTx()(err error){ //此处为等号,否则创建局部变量 db,err=sql.Open("mysql","root:smallming@tcp(localhost:3306)/ego") if err!=nil{ fmt.Println("连接失败",err) return } //开启事务 tx,err=db.Begin() if err!=nil{ fmt.Println(err) return } return nil}//判断返回值是否大于1func PrepareWithTx(sql string ,args ... interface{}) int{ result,err:=tx.Exec(sql,args...) if err!=nil{ fmt.Println(err) return -1 } count,err:=result.RowsAffected() if err!=nil{ fmt.Println(err) return -1 } return int(count)}//提交事务func CloseConnWithTx(result bool){ if result{ tx.Commit()//提交事务 }else{ tx.Rollback()//回滚事务 } if rows!=nil{ rows.Close() } if stmt!=nil{ stmt.Close() } if db!=nil{ db.Close() }}