Skip to content

Instantly share code, notes, and snippets.

@xigang
Last active April 14, 2016 02:12
Show Gist options
  • Select an option

  • Save xigang/587bf6db2995aeea8a15bdfb575f9421 to your computer and use it in GitHub Desktop.

Select an option

Save xigang/587bf6db2995aeea8a15bdfb575f9421 to your computer and use it in GitHub Desktop.
初始化数据库
const (
DBName = "rijin"
Host = "localhost"
User = "root"
Port = 3306
Password = "wangxigang"
Charset = "utf8"
)
func initDatabase() (err error) {
db := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", User, Password, Host, Port, DBName, Charset)
engine, err = xorm.NewEngine("mysql", db)
return
}
//事务处理
import (
"github.com/go-xorm/xorm"
)
var (
engines map[string]*xorm.Engine
)
func SetXormEngines(engines map[string]*xorm.Engine) {
engines = engines
}
type TranFunc func(session *xorm.Session) (result interface{}, err error)
func DoTransaction(db string, fc TranFunc) (result interface{}, err error) {
session := engines[db].NewSession()
err = session.Begin()
if err != nil {
return
}
isNeedRollBack := true
defer func() {
if isNeedRollBack {
err = session.Rollback()
if err != nil {
return
}
}
}()
result, err = fc(session)
if err != nil {
return
}
err = session.Commit()
if err != nil {
return
}
isNeedRollBack = false
return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment