beego


            beego使用orm包操作数据库

1、Model的设置

1 //声明一个结构体,用于映射数据库表
2 type Person struct { 3     Id int
4     Name string `orm:"size(100)"` 5     Age int
6 }

 

 

2、数据库的设置

RegisterDrive

1 // 参数1 driverName 2 // 参数2 数据库类型 3 // 这个用来设置 driverName 对应的数据库类型 4 // mysql / sqlite3 / postgres 这三种是默认已经注册过的,所以可以无需设置
5 orm.RegisterDriver("mysql", orm.DRMySQL)

RegisterDataBase

ORM 必须注册一个别名为 default 的数据库,作为默认使用。

 1 // 参数1 数据库的别名,用来在 ORM 中切换数据库使用  2 // 参数2 driverName  3 // 参数3 对应的链接字符串
 4 orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8")  5 
 6 // 参数4(可选) 设置最大空闲连接  7 // 参数5(可选) 设置最大数据库连接 (go >= 1.2)
 8 maxIdle := 30
 9 maxConn := 30
10 orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8", maxIdle, maxConn)

 

SetMaxIdleConns

根据数据库的别名,设置数据库的最大空闲连接

orm.SetMaxIdleConns("default", 30)

 

SetMaxOpenConns

根据数据库的别名,设置数据库的最大数据库连接 (go >= 1.2)

orm.SetMaxOpenConns("default", 30)

 

注册模型

如果使用 orm.QuerySeter 进行高级查询的话,这个是必须的。

package main import "github.com/astaxie/beego/orm" type User struct { Id int Name string } func init(){ orm.RegisterModel(new(User)) }

 

RegisterModel 也可以同时注册多个 model

orm.RegisterModel(new(User), new(Profile), new(Post))

 

RegisterModelWithPrefix

使用表名前缀

orm.RegisterModelWithPrefix("prefix_", new(User))

 

beego设置自动创建表

1    //参数1 使用默认的数据库 2     //参数2 为true如果当前语句发送错误,则执行下一条语句 3     //参数3 为true表示打印建表和sql执行的信息
4     orm.RunSyncdb("default",false,true)

 

 

调试模式打印查询语句

1 orm.Debug = true

 

 

3、ORM 接口使用

 1 //查询操作
 2 func read(){  3     o := orm.NewOrm()  4     person := Person{Id:2}  5     err := o.Read(&person)  6     if err != nil {  7         fmt.Println("err=",err)  8  }  9     logs.Info("查询成功") 10 } 11 
12 //插入操作
13 func insert(){ 14     o := orm.NewOrm() 15     person := Person{Name:"朝阳",Age:19} 16     _,err := o.Insert(&person) 17     if err != nil { 18         fmt.Println("插入失败") 19         fmt.Println("err=",err) 20  } 21 } 22 
23 //更新操作
24 func update(){ 25     o := orm.NewOrm() 26     person := Person{Id:3,Name:"baihu",Age:20} 27     _,err := o.Update(&person) 28     if err != nil { 29         fmt.Println("err=",err) 30  } 31     fmt.Println("更新成功") 32 
33 } 34 
35 //删除操作
36 func delete(){ 37     o := orm.NewOrm() 38     person := Person{Id:3} 39     n,err := o.Delete(&person) 40     if err != nil { 41         fmt.Println("err=",err) 42  } 43     fmt.Printf("成功删除%d条记录",n) 44 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM