美文网首页beego
3.2 Beego ORM框架

3.2 Beego ORM框架

作者: 帶頭二哥 | 来源:发表于2020-01-12 20:43 被阅读0次

3.2 ORM框架

Beego中内嵌了ORM框架,用来操作数据库。那么ORM框架是什么呢?ORM框架是Object-RelationShip-Mapping的缩写,中文叫对象关系映射.

3.2.1 ORM初始化

  • 首先要导包

    import "github.com/astaxie/beego/orm"
    
  • 然后要定义一个结构体

    type User struct{
        Id int
        Name string
        PassWord string
    }
    

    思考:如果表名和字段名为小写会发生什么结果?

    注意观察数据库表中的字段和结构体中的字段是否一样?

  • 然后向数据库中注册表,这一步又分为三步:

    • 连接数据库

      用RegisterDataBase()函数,第一个参数为数据库别名,也可以理解为数据库的key值,项目中必须有且只能有一个别名为default的连接,第二个参数是数据库驱动,这里我们用的是MySQL数据库,所以以MySQL驱动为例,第三个参数是连接字符串,和传统操作数据库连接字符串一样,格式为:用户名:密码@tcp(ip:port)/数据库名称?编码方式,代码如下:

      orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/class1?charset=utf8")
      

      注意:ORM只能操作表,不能操作数据库,所以我们连接的数据库要提前在MySQL终端创建好。

    • 注册数据库表

      用orm.RegisterModel()函数,参数是结构体对象,如果有多个表,可以用 ,隔开,多new几个对象:

      orm.RegisterModel(new(User))
      
    • 生成表

      用orm.RunSyncdb()函数,这个函数有三个参数,

      第一个参数是数据库的别名和连接数据库的第一个参数相对应。

      第二个参数是是否强制更新,一般我们写的都是false,如果写true的话,每次项目编译一次数据库就会被清空一次,fasle的话会在数据库发生重大改变(比如添加字段)的时候更新数据库。

      第三个参数是用来说,生成表过程是否可见,如果我们写成课件,那么生成表的时候执行的SQL语句就会在终端看到。反之看不见。代码如下:

      orm.RunSyncdb("default",false,true)
      

完整代码如下:

import "github.com/astaxie/beego/orm"

type User struct {
    Id int
    Name string
    Passwd string
}

func init(){
    //1.连接数据库
    orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
    //2.注册表
    orm.RegisterModel(new(User))
    //3.生成表
    //1.数据库别名
    //2.是否强制更新
    //3.创建表过程是否可见
    orm.RunSyncdb("default",false,true)
}

因为这里我们把ORM初始化的代码放到了 models包的init()函数里面,所以如果我们想让他执行的话就需要在main.go里面加入这么一句代码:

import _ "classOne/models"

3.2.2 简单的ORM增删改查操作

在执行ORM的操作之前需要先把ORM包导入,但是GoLand会自动帮我们导包,也可以手动导包

import "github.com/astaxie/beego/orm"

插入

  • 先获取一个ORM对象,用orm.NewOrm()即可获得

    o := orm.NewOrm()
    
  • 定义一个要插入数据库的结构体对象

    var user User
    
  • 给定义的对象赋值

    user.Name = "zhangsan"
    user.Passwd = "123456"
    

    这里不用给Id赋值,因为建表的时候我们没有指定主键,ORM默认会以变量名为Id,类型为int的字段当主键,至于如何指定主键,我们明天详细介绍。

  • 执行插入操作,o.Insert()插入,参数是结构体对象,返回值是插入的id和错误信息。

    id, err := o.Insert(&user)
    if err == nil {
        fmt.Println(id)
    }
    

查询

  • 也是要先获得一个ORM对象

    o := orm.NewOrm()
    
  • 定义一个要获取数据的结构体对象

    var user User
    
  • 给结构体对象赋值,相当于给查询条件赋值

    user.Name = "zhangsan"
    
  • 查询,用o.Read(),第一个参数是对象地址,第二个参数是指定查询字段,返回值只有错误信息。

    err := o.Read(&user,"Name")
    if err != nil{
          beego.Info("查询数据错误",err)
          return
      }
    

    如果查询字段是查询对象的主键的话,可以不用指定查询字段

更新

  • 一样的套路,先获得ORM对象

    o := orm.NewOrm()
    
  • 定义一个要更新的结构体对象

    var user User
    
  • 给结构体对象赋值,相当于给查询条件赋值

    user.Name = "zhangsan"
    
  • 查询要更新的对象是否存在

    err := o.Read(&user)
    if err != nil{
      beego.Info("查询数据错误",err)
      return
    }
    
  • 如果查找到了要更新的对象,就给这个对象赋新值

    user.Passwd = "123456"
    
  • 执行更新操作,用o.Update()函数,参数是结构体对象指针,返回值是更新的条目数和错误信息

    count,err=o.Update(&user)
    if err != nil{
      beego.Info("更新数据错误",err)
      return
    }
    

删除

  • 同样的,获取ORM对象,获取要删除的对象

    o := orm.NewOrm()
    var user User
    
  • 给删除对象赋值,删除的对象主键必须有值,如果主键没值,就查询一下。我们这里直接给主键赋值。

    user.Id = 1
    
  • 执行删除操作,用的方法是o.Delete(),参数是删除的结构体对象,返回值是删除的条目数和错误信息

    num, err := o.Delete(&User{Id: 1})
    if err == nil {
        fmt.Println(num)
    }
    

相关文章

  • 3.2 Beego ORM框架

    3.2 ORM框架 Beego中内嵌了ORM框架,用来操作数据库。那么ORM框架是什么呢?ORM框架是Object...

  • Beego Models 之 一

    模型(Models)- beego ORM 原文 beego ORM 是一个强大的 Go 语言 ORM 框架。她的...

  • 使用orm自动创建表结构

    关于 Beego 框架,这里不再赘述。Beego官方网站 一、什么是orm,为什么要用orm? orm (Obje...

  • 5.Beego框架之model

    一、模型(Models) beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自 Djang...

  • beego 时间类型json格式问题

    beego 时间类型json格式化问题再使用beego的orm框架时,如果希望重新定义time.Time转json...

  • Go后台项目实战

    本项目完全使用原生开发,没有使用任何WEB框架(如:gin,beego,Martini等),和ORM(如:gorm...

  • Beego框架

    Beego框架是Go语言的一款MVC框架。内置了ORM数据库映射操作。1.简单化RESTful 支持、MVC 模型...

  • Beego orm

    批量删除 Example 流程 根据对应表, 构建QuerySeter对象 添加查询条件 在最后的结构集上调用De...

  • beego ORM

    1.创建表 2.插入数据 3.查询数据 4.更新数据 把数据库init放到models里面

  • beego orm

    ORM官方文档为:https://github.com/beego/beedoc/blob/master/zh-C...

网友评论

    本文标题:3.2 Beego ORM框架

    本文链接:https://www.haomeiwen.com/subject/dqewactx.html