标签:base range strong lse set drive 简单的 amp title
beego ORM是一个强大的Go语言ORM框架。她的灵感主要来自Django ORM和SQLAlchemy。
已经支持的数据库驱动:
ORM的特性:
安装ORM:
go get github.com/astaxie/beego/orm
package main import ( "fmt" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" // import your used driver ) // Model Struct type User struct { Id int Name string `orm:"size(100)"` } func init() { // set default database orm.RegisterDataBase("default", "mysql", "username:password@tcp(127.0.0.1:3306)/db_name?charset=utf8", 30) // register model orm.RegisterModel(new(User)) // create table orm.RunSyncdb("default", false, true) } func main() { o := orm.NewOrm() user := User{Name: "slene"} // insert id, err := o.Insert(&user) fmt.Printf("ID: %d, ERR: %v\n", id, err) // update user.Name = "astaxie" num, err := o.Update(&user) fmt.Printf("NUM: %d, ERR: %v\n", num, err) // read one u := User{Id: user.Id} err = o.Read(&u) fmt.Printf("ERR: %v\n", err) // delete num, err = o.Delete(&u) fmt.Printf("NUM: %d, ERR: %v\n", num, err) }
type Post struct { Id int `orm:"auto"` Title string `orm:"size(100)"` User *User `orm:"rel(fk)"` } var posts []*Post qs := o.QueryTable("post") num, err := qs.Filter("User__Name", "slene").All(&posts)
当你无法使用ORM来达到您的需求的时候,也可以直接使用SQL来完成查询/映射操作。
var maps []orm.Params num, err := o.Raw("SELECT * FROM user").Values(&maps) for _,term := range maps{ fmt.Println(term["id"],":",term["name"]) }
事务处理
o.Begin() ... user := User{Name: "slene"} id, err := o.Insert(&user) if err == nil { o.Commit() } else { o.Rollback() }
在开发环境下,您可以使用以下指令来开启调试模式:
orm.Debug = true
开启后将会输出所有的查询语句,包括执行、准备、事务等。例如
[ORM] - 2013-08-09 13:18:16 - [Queries/default] - [ db.Exec / 0.4ms] - [INSERT INTO `user` (`name`) VALUES (?)] - `slene`
标签:base range strong lse set drive 简单的 amp title
原文地址:https://www.cnblogs.com/yangmingxianshen/p/10122418.html