欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用go xorm来操作mysql的方法实例

程序员文章站 2023-09-06 18:56:50
在golang中要实现对数据库的操作, 一个比较好用的方式就是使用xorm,xorm是一个简单而强大的go语言orm库,通过它可以使数据库操作非常简便。 在xorm里面,可...

在golang中要实现对数据库的操作, 一个比较好用的方式就是使用xorm,xorm是一个简单而强大的go语言orm库,通过它可以使数据库操作非常简便。 在xorm里面,可以同时存在多个orm引擎,一个orm引擎称为engine,一个engine一般只对应一个数据库。

golang的连接池配置

这里初始化一个全局的xorm.engine对象, xorm.engine通过调用xorm.newengine生成在很多其他的api都需要传入该对象作为参数。 这里需要理解这里设定的3个参数的意义:

setmaxidleconns()

  • 设置连接池中的保持连接的最大连接数。默认也是0,表示连接池不会保持释放会连接池中的连接的连接状态:即当连接释放回到连接池的时候,连接将会被关闭。这会导致连接再连接池中频繁的关闭和创建。

setmaxopenconns()

  • 设置打开数据库的最大连接数,包含正在使用的连接和连接池的连接。如果你的函数调用需要申请一个连接,并且连接池已经没有了连接或者连接数达到了最大连接数。此时的函数调用将会被block,直到有可用的连接才会返回。设置这个值可以避免并发太高导致连接mysql出现too many connections的错误。该函数的默认设置是0,表示无限制。

setconnmaxlifetime

  • 设置连接可以被使用的最长有效时间,如果过期,连接将被拒绝。

go xorm来操作mysql

很有用,来看下:

package main
import (
  "fmt"
  "github.com/go-xorm/xorm"
  "github.com/go-xorm/core"
  _ "github.com/go-sql-driver/mysql"
)
// 对应数据库的tablename必须为student
// 执行mysql时,对应的字段为xxx,yyy,zzz; 也可以省掉,默认的mysql字段为id,username,address
type student struct {
  id    int    `xorm:"int(11) 'xxx'"`
  username string  `xorm:"varchar(64) 'yyy'"`
  address string  `xorm:"varchar(256) 'zzz'"`
}
func main() {
  engine, err := xorm.newengine("mysql", "root@/taoge?charset=utf8") // dbname是taoge
  if err != nil{
    fmt.println(err)
    return
  }
  // 如下ping可以不要
  // if err := engine.ping(); err != nil{
  //   fmt.println(err)
  //   return
  // }
  //engine.showsql(true) // 显示sql的执行, 便于调试分析
  engine.settablemapper(core.snakemapper{})
  st1 := new(student)
  st1.username = "taoge"
  st1.address = "china"
  affected, err := engine.insert(st1)
  fmt.println(affected)
  st2 := new(student)
  result,err := engine.where("xxx=?", 1).get(st2)
  fmt.println(result)
  fmt.println(st2.username)
  fmt.println(st2.address)
}

创建数据库:

create table `student` (
 `xxx` int(11) not null auto_increment,
 `yyy` varchar(64) not null,
 `zzz` varchar(256) not null ,
 primary key (`xxx`)
) engine=innodb auto_increment=1 default charset=utf8;

运行结果:

1
true
taoge
china

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接