beego MySQL数据库连接池
来源:互联网 发布:淘宝代销下单怎么处理 编辑:程序博客网 时间:2024/05/22 00:41
转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/55252990,建议读者阅读原文,确保获得完整的信息
1.背景
beego的orm模块自带连接池功能,可以通过设置MaxIdleConns、MaxOpenConns来配置连接池属性
orm.SetMaxIdleConns("default",1000)orm.SetMaxOpenConns("default",2000)
SetMaxOpenConns用于设置最大打开的连接数,默认值为0表示不限制。
SetMaxIdleConns用于设置闲置的连接数。
设置最大的连接数,可以避免并发太高导致连接mysql出现too many connections的错误。设置闲置的连接数则当开启的一个连接使用完成后可以放在池里等候下一次使用。
2.实例
main函数实现用户信息插入、查询、删除、更新,初始化数据库对象,在main函数中仅创建了一个orm.Ormer对象,而不是在具体方法中创建该对象。
package mainimport ( "fmt" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" "helloapi/models")func init() { orm.RegisterDriver("mysql", orm.DRMySQL) orm.RegisterDataBase("default", "mysql", "manager:123456@tcp(122.66.111.123:3306)/test?charset=utf8") orm.SetMaxIdleConns("default",1000) orm.SetMaxOpenConns("default",2000)}func main() { o := orm.NewOrm() user := models.User{ User_name:"loongshawn", Age:29, Email:"loongshawn@jjj.com", Staff_id:"123456", Position:"研发工程师", Extension_number:"", Telephone_number:"15642314234", Office_location:"商会产业园", } // insert o.Begin() id, err := models.UserAdd(o,user) fmt.Printf("ID: %d, ERR: %v\n", id, err) if err != nil { o.Rollback() fmt.Println("插入user表出错,事务回滚") } else { o.Commit() fmt.Println("插入user表成功,事务提交") } // search u := [] interface{}{user.User_name,user.Age} var sql = "select * from user where user_name = ? and age = ? and enabled = 1" users,err := models.UserQuery(o,sql,u) fmt.Println(users) // delete o.Begin() num, err := models.UserCut(o,user) fmt.Printf("NUM: %d, ERR: %v\n", num, err) if err != nil { o.Rollback() fmt.Println("插入user表出错,事务回滚") } else { o.Commit() fmt.Println("插入user表成功,事务提交") } // update user.Id = 2 num1, err := models.UserUpdate(o,user) fmt.Printf("NUM: %d, ERR: %v\n", num1, err)}
用户model, user.go定义user结构体及插入、查询、删除、更新的方法。
package modelsimport ( "github.com/astaxie/beego/orm" "fmt")type User struct { Id int User_name string Age int Email string Staff_id string Position string Extension_number string Telephone_number string Office_location string}func init() { // 需要在init中注册定义的model orm.RegisterModel(new(User))}func UserAdd(o orm.Ormer,user User) (int64, error){ // insert return o.Insert(&user)}func UserQuery(o orm.Ormer,sql string,paras [] interface{}) ([] User,error){ // query var users [] User num,err := o.Raw(sql,paras).QueryRows(&users) fmt.Printf("NUM: %d, ERR: %v\n", num, err) return users,err}func UserCut(o orm.Ormer,user User) (int64, error){ // delete return o.Delete(&user,"user_name")}func UserUpdate(o orm.Ormer,user User) (int64, error){ // update return o.Update(&user,"user_name")}
数据库操作效果
当然,还有其它的go持久层框架,因此需要大家使用过程中来比较那个框架合适。
参考资料:
[1]、Beego orm 模块理解困惑
0 0
- beego MySQL数据库连接池
- beego框架连接mysql
- tomcat-mysql数据库连接池
- tomcat-mysql数据库连接池
- java-mysql数据库连接池
- mysql使用数据库连接池
- 配置Mysql数据库连接池
- MySql数据库连接池
- mysql数据库连接池配置
- MySQL数据库连接池配置
- MySql数据库连接池
- MySql数据库连接池
- MySQL 数据库连接池
- MySQL数据库连接池技术
- MySQL数据库连接池
- MySQL数据库连接池
- MySql数据库连接池
- MySQL 数据库连接池
- 蓝桥杯基础练习 芯片测试
- Xmaneger+xshell远程访问图形化程序
- Mac 显示隐藏文件夹
- HDU 1024 Max Sum Plus Plus
- java中向文本文件中读取数据之使用Scanner
- beego MySQL数据库连接池
- MYSQL性能优化详解(一)
- shiro中的细节问题(1)
- Windows环境下配置oracle 11gR2 Data Guard详细过程
- 剑指:从尾到头打印链表
- SSH HibernateDaoImpl
- FFmpeg的安装
- java实现图片格式转换为JPG
- Java程序如何生成Jar、exe及安装文件