1、models中存放的是表的设计相关的代码
2、controllers中存放的是表的操作相关的代码
O object 对象
R relation 关系性数据库
M mapping 映射
beego中内嵌了ORM框架,ORM框架可以将结构体和数据表进行对应起来,只需要通过结构体和对象就可以对数据表进行操作。
对应关系:
结构体-----数据库表
属性----字段
对象----记录
设计类:模型类。
ORM另外一个作用:根据设计的类生成数据库中的表。
go get github.com/astaxie/beego/orm
go get -u github.com/go-sql-driver/mysql //安装驱动
(1)在models文件夹下新建一个go文件
(2)定义一个结构体,结构体的名称和属性根据数据库表明和字段名确定
(3)在主函数中导入该go文件,如:_ "quickstart/models"
(4)在该go文件中定义init()函数,函数内容
func init(){
// 设置数据库基本信息,相当于连接数据库
orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/test1?charset=utf8") //参数1:别名;参数2:所支持的数据库类型;参数3:数据库账号:密码@tcp(IP:端口号)/数据库名称?编码格式
// 映射model数据
orm.RegisterModel(new(User))
// 生成表
orm.RunSyncdb("default", false, true) //参数1:别名;参数2:是否强制更新,默认是false;参数3:创建过程是否可见
}
注意:ORM只能创建表无法创建数据库,数据库需要手动创建。
(1)增删改查的业务放在控制器里面,即controllers中
(1)在controllers中的default.go中插入:
func (c *MainController) Get() {
//1.有ORM对象
o :=orm.NewOrm()
//2.有一个要插入数据的结构体对象
user := models.User{}
//3.对结构体对象赋值
user.Name = "root"
user.Pwd = "123456"
//4.插入
_,err := o.Insert(&user) //省略的参数是一个int类型的,表明插入多少数据
if err != nil{
beego.Info("插入失败:",err)
return
}
}
代码块还是在上述函数中,根据Id查询
// 1.有ORM对象
o := orm.NewOrm()
// 2.查询的对象
user := models.User{}
// 3.指定查询对象字段值
user.Id = 1 //根据Id查询
// 4.查询
err := o.Read(&user)
if err != nil{
beego.Info("查询失败:",err)
return
}
beego.Info("查询成功",user)
代码块还是在上述函数中,根据Name查询和通过Id查询略有不同
// 1.有ORM对象
o := orm.NewOrm()
// 2.查询的对象
user := models.User{}
// 3.指定查询对象字段值
user.Name = "root"
// 4.查询
err := o.Read(&user,"Name") //不同之处,传入两个参数
if err != nil{
beego.Info("查询失败:",err)
return
}
beego.Info("查询成功",user)
代码块还是在上述函数中
//1.有ORM对象
o := orm.NewOrm()
//2.有需要查询的结构体对象
user := models.User{}
//3.找到需要更新的数据
user.Id = 1
//4.给数据重新赋值
err := o.Read(&user)
if err == nil{
user.Name = "zhulinxuezhe"
user.Pwd = "zhulinxuezhe123"
//5.更新
_,err := o.Update(&user) //省略的是一个int类型的返回值,代表的是更新了多少条数据
if err != nil{
beego.Info("更新失败:",err)
}
}
代码块还是在上述函数中
//1.有ORM对象
o := orm.NewOrm()
//2.有一个删除的对象
user := models.User{}
//3.指定删除的是哪一条数据
user.Id = 1
//4.删除
_,err := o.Delete(&user) //省略的是一个int类型的返回值,代表的是删除了多少条数据
if err !=nil{
beego.Info("删除失败:",err)
return
}