注意,
在ORM操作中
type Student struct{
Id int
Name string
}
在表中,会变成student
Id 会变成id
Name 会变成name
所以
在数据库中,会把首字母都变成小写
但是如果是这样
type BigStudent struct{
BigId int
BigName string
}
这样的话,表名变成 big_student
字段变成 big_id 和 big_name
写一下models
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
type Student struct {
Id int
Name string
Age int
}
func init() {
orm.RegisterDataBase("default","mysql","root:123@tcp(127.0.0.1:3306)/abc?charset=utf8")
orm.RegisterModel(new(Student))
orm.RunSyncdb("default",false,true)
}
我们添加一个orm路由
beego.Router("/orm", &controllers.OrmController{},"get:ShowOrm")
然后我们在controllers文件夹
创建一个ormOpt.go文件
type OrmController struct{
beego.Controller
}
func (this *OrmController) ShowOrm(){
//1.创建orm对象
o := orm.NewOrm()
//2.获取插入对象
var stu models.Student
//3.给插入对象赋值
stu.Id=1
stu.Name="Alice"
stu.Age=20
//4.插入
o.Insert(&stu)
}
现在来说一下查询
func (this *OrmController) ShowOrm(){
o := orm.NewOrm()
var stu models.Student
stu.Name="Alice"
o.Read(&stu,"Name")
beego.Info(stu)
}
查询结果为id=1,name=Alice,age=23
所以,这里的stu相当于是一个查询条件
然后传入到Read函数
然后查询结果的字段数据
都放到了stu对象里面
就拿到了查询结果
有点意思
然后再来看更新update
func (this *OrmController) ShowOrm(){
o := orm.NewOrm()
var stu models.Student
//先查询一下,需要更新的对象是否存在
stu.Name="Alice"
err := o.Read(&stu,"Name")
//如果err不为空,那么查询的对象不存在
if err!=nil {
beego.Error("不存在",err)
return
}
//给更新的数据赋值
stu.Name="Bob"
stu.Age=30
//然后进行更新
o.Update(&stu)
}
然后是删除
func (this *OrmController) ShowOrm(){
o := orm.NewOrm()
var stu models.Student
stu.Name="Alice"
count,err := o.Delete(&stu,"Name")
beego.Info(count,err)
}