会话
worm 提供了 Session 办法用于创立带配置的会话。应用会话能够共用一组配置,例如:开启 SQL 预编译,或者是 SQL 日志输入配置。会话该当只用于一个 go routine 中, 通常在一个 HTTP 处理器中创立并应用会话。例如:
func AddOrder(c *wego.WebContext) {session := worm.NewSession()
session.ShowLog(true)
var order dao.Order
order.Create_time = time.Now().Unix()
//.....
var err error
order.Id, err = dbs.Model(&order).Insert()
if err != nil {log.Error(err)
c.AbortWithText(510, err.Error())
return
}
c.WriteTextF(200, "%d", order.Id)
}
应用 SQL 语句预编译
worm 反对 SQL 语句的预编译,应用 SQL 语句预编译能够晋升数据库拜访的效率。在 worm 中能够通过三种形式开启 SQL 语句预编译:全局开启、会话中开启、语句中开启。
-
开启全局预编译
func main2() {dbcnn, err := initMySql("account:pwd@tcp(127.0.0.1:3306)/db?charset=utf8&parseTime=True") if err != nil {log.Error(err) } defer dbcnn.Close() err = worm.InitMysql(dbcnn) if err != nil {log.Error(err) return } worm.ShowSqlLog(true) // 开启 SQL 语句预编译 worm.UsePrepare(true) // 设置预编译 stmt 缓存的最大数量 worm.SetMaxStmtCacheNum(1000) }
-
会话中开启预编译
func demoPrepareSession() {session := worm.NewSession() session.UsePrepare(true) var user = User{Name:"name1", Age: 21, Created: time.Now()} id, err := worm.Model(&user).Insert() if err != nil{log.Error(err) return } _, err = worm.Model(&User{}).ID(id).Delete() if err != nil{log.Error(err) return } }
-
语句中开启预编译
func demoModelPrepare() {var user = User{Name:"name1", Age: 21, Created: time.Now()} _, err := worm.Model(&user).UsePrepare(true).Select("name", "age").ID(1).Update() if err != nil{log.Error(err) return } }
装置 worm
go get github.com/haming123/wego/worm
worm 应用文档
请点击:具体文档