ORM(beego)简介及简单的增删改查操作

ORM(beego)简介及简单的增删改查操作

1、models中存放的是表的设计相关的代码
2、controllers中存放的是表的操作相关的代码

1.什么是ORM

    O object 对象
    R relation 关系性数据库
    M mapping 映射

2.作用

    beego中内嵌了ORM框架,ORM框架可以将结构体和数据表进行对应起来,只需要通过结构体和对象就可以对数据表进行操作。
    对应关系:
        结构体-----数据库表
        属性----字段
        对象----记录
    设计类:模型类。
    ORM另外一个作用:根据设计的类生成数据库中的表。

3. 安装ORM

go get github.com/astaxie/beego/orm
go get -u github.com/go-sql-driver/mysql		//安装驱动

4.使用ORM,创建表

    (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只能创建表无法创建数据库,数据库需要手动创建。

5. 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
	}
}

6.ORM查询

    代码块还是在上述函数中,根据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)

7.ORM更新

    代码块还是在上述函数中

//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)
		}
	}

8. ORM删除

    代码块还是在上述函数中

//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
}

你可能感兴趣的:(笔记)