对beego的Orm的Read函数的理解

在官方文档上beego的Read函数

o := orm.NewOrm() //第一步,新建orm对象
user := User{Id: 1} //新建model对象,并初始化。默认你初始化主键

//orm的read函数默认是用主键进行查询的,
//所以如果不指定字段,就一定要在初始化Model的时候要设置主键的值
err = o.Read(&user) 

if err == orm.ErrNoRows {
    fmt.Println("查询不到")
} else if err == orm.ErrMissPK {
    fmt.Println("找不到主键")
} else {
    fmt.Println(user.Id, user.Name)
}
//Read 默认通过查询主键赋值,可以使用指定的字段进行查询:
//在指定字段的时候依然要给model赋值,赋值字段就是要查询的字段的值,
//然后指定要查询的字段,根据指定的字段查询和指定字段的值,查询出与model指定字段相匹配的数据库model
//第一个参数是已经用所要查询字段的值初始化过后的对象
//第二个参数指定查询的字段,(注意是查询的字段不是查询字段的值,
//因此新建一个model对象之后一定要用所要查询字段的值初始化所要查询的字段)
user := User{Name: "slene"}
err = o.Read(&user, "Name")
...


可以看出,Read函数输入的是structstruct的某一或多个字段,输出错误信息(若没有错误则输出为空)。 
但是,如果查询到数据库中有Id=1的值,则把其整体赋值给user,例如: 
若数据库中有{'1', '学院概况', '0', '2,3,4,5,6,7', '1', '学院概况'}的一列,则Read成功后user={'1', '学院概况', '0', '2,3,4,5,6,7', '1', '学院概况'},而不是其刚刚创建时的user={'1'}
 

注意:

第一点:
orm的read函数默认是用主键进行查询的,
所以如果不指定字段,就一定要在初始化Model的时候要设置主键的值

第二点:
Read 默认通过查询主键赋值,也可以使用指定的字段进行查询。
在指定字段的时候依然要给model赋值,赋值字段就是要查询的字段的值,然后指定要查询的字段,根据指定的字段查询和指定字段的值,查询出与model指定字段相匹配的数据库model
第一个参数是已经用所要查询字段的值初始化过后的对象
第二个参数指定查询的字段,(注意是查询的字段不是查询字段的值,
因此在指定一个查询字段时,新建一个model对象之后仍然要用所要查询字段的值初始化所要查询的字段)

你可能感兴趣的:(GO)