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