当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > 使用go xorm来操作mysql的方法实例

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

在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

总结

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网