ORM使用
ORM的使用方法
ORM的使用有两种:QuerySeter和RawSeter。对于QuerySeter,需要在orm中注册模型。而如果直接使用原生的sql,则不需要。所以,我们一般只使用原生的sql查询。
QuerySeter的使用可以参考文档 beego.me。
本文只介绍RawSeter的使用,请先看《最佳实践》小节的内容。
数据库的设置
导入包
目前 ORM 支持三种数据库,以下为测试过的 driver。将你需要使用的 driver 加入 import 中
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
)
RegisterDriver
orm.RegisterDriver("mysql", orm.DRMySQL)
三种默认数据库类型
// For version 1.6
orm.DRMySQL
orm.DRSqlite
orm.DRPostgres
// < 1.6
orm.DR_MySQL
orm.DR_Sqlite
orm.DR_Postgres
RegistrerDatabase
ORM 必须注册一个别名为 default 的数据库,作为默认使用。
orm.RegisterDataBase("default", "mysql", "root:root@tcp(192.168.1.1:3306)/orm_test?charset=utf8")
可以注册多个数据库,然后在不同的数据库之间切换
orm.RegisterDataBase("default", "mysql", "root:root@tcp(192.168.1.1:3306)/orm_test?charset=utf8")
orm.RegisterDataBase("db1", "mysql", "root:root@tcp(192.168.1.2:3306)/orm_test?charset=utf8")
ormer := orm.NewOrmer()
ormer.Using("db1") # 如果没有显示Using,则默认使用default
ORM接口使用
创建一个ormer
var o Ormer
o = orm.NewOrm() // 创建一个 Ormer
Ormer的接口定义如下:
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
}
Last updated
Was this helpful?