Go实战项目-Beego的orm的基本使用
beego的使用三部曲:
1、在controllers里面创建控制器
2、在module里面创建数据模型
3、在router设置路由控制
对于beego的orm使用有很多种方式,我们主要采用过滤器的方式来实现。因为前面说过,严禁使用原生的sql语句。
单表查询
依然三部曲:
1、创建模型
2、注册模型
3、使用模型获取数据
//注意表和列的命名规则
type CLogin struct {
Id int `orm:"column(id)" json:"id"`
LoginId string `orm:"column(LoginId)" json:"LoginId"`
Pwd string `orm:"column(Pwd)" json:"Pwd"`
FullName string `orm:"column(FullName)" json:"FullName"`
DepartmentId int `orm:"column(DepartmentId)" json:"DepartmentId"`
DepartmentName string `orm:"column(DepartmentName)" json:"DepartmentName"`
RoleId int `orm:"column(role_id)" json:"role_id"`
Deleted int `orm:"column(deleted)" json:"deleted"`
Telephone string `orm:"column(telephone)" json:"telephone"`
IdCard string `orm:"column(id_card)" json:"id_card"`
JobCard string `orm:"column(job_card)" json:"job_card"`
EnterpriseId int64 `orm:"column(enterpriseId)" json:"enterpriseId"`
UpdateTime time.Time `orm:"type(datetime);column(update_time)" json:"update_time"` //date 这些tag可以通过反射来自己实现
//CRole *CRoles `orm:"rel(one)" json:"role"`
}
站在这里就有int,string,date格式的表述,其他类型,都是一次类推,特殊类型的,可以用type指定,如orm:"type(datetime);column(update_time)
单表查询的一种方式,仅仅作为演示:
o := orm.NewOrm()
user = CLogin{
LoginId: loginId}
err = o.Read(&user, "LoginId")
//多条件不能这么写,这样获取不到数据
//user = CLogin{LoginId: loginId, Pwd: md5Pwd}
注意,这种方式只能匹配第一参数,后面添加了也不会识别,不知道是不是我使用的问题还是怎么回事,咱的重点也不在这,由于此项目没有外键,无法进行模型关联查询,所以只能舍弃这种方式的研究,采用过滤器的方式。当然,还有build的方式来实现,可以参考官网自己实现。
//采用过滤器QuerySeter实现
err = o.QueryTable(“c_login”).Filter(“LoginId”,loginId).Filter(“pwd”,pwd).One(&user)
不定项条件查询:
//不定项多条件查询
querySet := o.QueryTable("c_login")
querySet = querySet.Filter("LoginId", loginId)
if pwd