Beego ORM 是一个使用便捷,有助于快速开发的 ORM 框架,其使用流程相对比较简洁。我们一起来看一下其使用的几个环节。
orm初始化流程:
1.先注册一个别名为"default"的DataBase,调用函数
orm.RegisterDataBase(aliasName, driverName, dataSource string, params ...int)
函数名参数含义如下:
aliasName: 数据库别名。同一进程中可以注册多个数据库,这个参数用来在 ORM 中切换数据库使用,多个别名中必须有一个缺省的"default"
driverName:驱动名,可以取"mysql","sqlite"等
dataSource:数据库源配置链接字符串,和Go的database/sql包打开数据库连接时传入的参数一样。如"username:password@tcp(127.0.0.1:3306)/db_name?charset=utf8"
params:这是个变长参数,params[0]:设置最大空闲连接 ,params[1]:设置最大数据库连接
2.注册model,调用函数
orm.(models ...interface{})
参数含义如下:
models:变长参数,这里可传入一个或多个model实例,如:
orm.RegisterModel(new(Book), new(User))
3.根据Model定义,自动创建数据表
orm.RunSyncdb(name string, force bool, verbose bool)
参数含义如下:
name:数据库别名
force:true:发生错误时,继续执行下一条sql
verbose:true:打印详细信息
以上三步,在实际应用中可能如下:
// 注册 default database,并设置数据库连接池最大空闲连接数为30
orm.RegisterDataBase("default", "mysql", "username:password@tcp(127.0.0.1:3306)/db_name?charset=utf8", 30)
//注册 model
orm.RegisterModel(new(User))
// 自动建表
orm.RunSyncdb("default", false, true)
数据读写
在读写数据方面,Beego ORM采用简单的 CRUD 风格,操作简便。我们看下面的例子:
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库
user := User{Id: 1}
user.Nickname = "admin"
o.Insert(&user)
user.Phone="18001010101"
o.Update(&user)
o.Read(&user,"phone") //查询phone="18001010101"的用户信息
o.Delete(&User{Id: 1}) //删除Id为1的用户
其中,Read函数原型如下:
Read(md interface{}, cols ...string) error
//参数说明
cols:以cols所指的字段构造sql查询
而Update函数原型的cols参数含义略有不同
Update(md interface{}, cols ...string) (int64, error)
//参数
cols:制定需要更新的字段
md:model对象,需给主键赋值。
Delete函数原型和Update比较类似,参数意义也相同。
Delete(md interface{}, cols ...string) (int64, error)
其他
1.Beego ORM支持原生sql查询,比如:
ids := []int{1, 2, 3}
p.Raw("SELECT name FROM user WHERE id IN (?, ?, ?)", ids)
2.在使用多数据库的场景时,只要在执行查询前,使用Using函数切换即可:
o:=orm.NewOrm()
o.Using("default") //切换到别名是default的database
...
Using函数原型如下:
Using(name string) error
name:数据库别名
我们可以看到,Beego ORM的基本使用还是相当便捷的,可以很好帮助我们提升开发效率。但也并非十全十美,比如:原生并不支持分表。