使用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语句预编译:全局开启、会话中开启、语句中开启。

  • 开启全局预编译

    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使用文档

请点击:详细文档

你可能感兴趣的:(使用Go语言ORM库worm的SQL预处理功能)