什么是ORM?
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中
使用beego ORM有三步:
第一步:在model里面构造struct模型,并注册模型
package main
import (
"github.com/astaxie/beego/orm"
)
type User struct {
Id int
Name string
}
func init() {
orm.RegisterModel(new(User))
}
第二部:将你需要使用的 driver 加入main.go中
import( _"github.com/go-sql-driver/mysql"
_"github.com/lib/pq"
_"github.com/mattn/go-sqlite3")
第三步:注册驱动和数据库**
- 注册驱动:orm.RegisterDriver("mysql", orm.DRMySQL) 如果是默认的三个可以不写
- 注册数据库:orm.RegisterDataBase("default", "mysql", "root:123456@/golang?charset=utf8") ////注册一个别名为default的数据库、驱动名字、数据库源
main.go
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func init() {
orm.RegisterDriver("mysql", orm.DRMySQL) //可以不加
orm.RegisterDataBase("default", "mysql", "root:password@/databasename?charset=utf8")
//ORM 必须注册一个别名为default的数据库,作为默认使用。
}
func main() {
o := orm.NewOrm() //new一个Orm,默认使用名为default的数据库
o.Using("default") // 你可以使用Using函数指定其他数据库
user := new(User)
user.Name = "ztz"
fmt.Println(o.Insert(user))
}
自己写是不是很麻烦?bee为我们提供了人性化的工具,在使用beego框架时,可以使用bee的工具,如:bee generate自动化一键生成 model,router,controllers
bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
但有一点要注意,在构造好数据库之后再使用generate工具,并且一个表中一定要有主键,不然生成的文件不是完整的。
接口使用:
type Ormer interface {
Read(interface{}, …string) error
ReadOrCreate(interface{}, string, …string) (bool, int64, error)
Insert(interface{}) (int64, error)
InsertMulti(int, interface{}) (int64, error)
Update(interface{}, …string) (int64, error)
Delete(interface{}) (int64, error)
LoadRelated(interface{}, string, …interface{}) (int64, error)
QueryM2M(interface{}, string) QueryM2Mer
QueryTable(interface{}) QuerySeter
Using(string) error
Begin() error
Commit() error
Rollback() error
Raw(string, …interface{}) RawSeter
Driver() Driver
}