使用Go语言ORM库worm的SQL预处理功能
会话
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语句预编译:全局开启、会话中开启、语句中开启。
- 【使用Go语言ORM库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使用文档
请点击:详细文档
推荐阅读
- Terraform:|Terraform: 基础设施即代码
- 开发过程中的常见问题|解决(The POM for xxx is missing, no dependency information available)
- 面试官(来说一说Go语言的函数调用惯例)
- Minikube使用文档
- Jackson原理探究—Mixins其一
- @OneToOne、@ManyToOne的具体使用与区别
- Vue使用Proxy代理后仍无法生效的解决
- Vue中使用js制作进度条式数据对比动画
- python|【十年网络安全工程师整理】—100渗透测试工具使用方法介绍
- 嵌入式|2021-07-08 使用RT-Thread Studio程序调试过程中的要点记录(芯片使用STM32F407ZE)