美文网首页GO读书笔记
《go web 编程》第四章 访问数据库:使用 Beego or

《go web 编程》第四章 访问数据库:使用 Beego or

作者: bycall | 来源:发表于2022-09-29 20:42 被阅读0次

    更新数据

    继续上面的例子来演示更新操作,现在 user 的主键已经有值了,此时调用 Insert 接口,beego orm 内部会自动调用 update 以进行数据的更新而非插入操作。

    
    o := orm.NewOrm()
    user := User{Uid: 1}
    if o.Read(&user) == nil {
        user.Name = "MyName"
        if num, err := o.Update(&user); err == nil {
            fmt.Println(num)
        }
    }
    

    Update 默认更新所有的字段,可以更新指定的字段:

    // 只更新 Name
    o.Update(&user, "Name")
    // 指定多个字段
    // o.Update(&user, "Field1", "Field2", ...)
    // Where: 用来设置条件,支持多个参数,第一个参数如果为整数,相当于调用了 Where ("主键 =?", 值)。
    

    查询数据

    beego orm 的查询接口比较灵活,具体使用请看下面的例子

    例子 1,根据主键获取数据:

    
    o := orm.NewOrm()
    var user User
    
    user := User{Id: 1}
    
    err = o.Read(&user)
    
    if err == orm.ErrNoRows {
        fmt.Println("查询不到")
    } else if err == orm.ErrMissPK {
        fmt.Println("找不到主键")
    } else {
        fmt.Println(user.Id, user.Name)
    }
    

    例子 2:


    image.png

    例子 3,WHERE IN 查询条件:


    image.png
    例子 4,更加复杂的条件:
    
    qs.Filter("profile__age__in", 18, 20).Exclude("profile__lt", 1000)
    // WHERE profile.age IN (18, 20) AND NOT profile_id < 1000
    

    可以通过如下接口获取多条数据,请看示例

    例子 1,根据条件 age > 17,获取 20 位置开始的 10 条数据的数据

    var allusers []User
    qs.Filter("profile__age__gt", 17)
    // WHERE profile.age > 17
    

    例子 2,limit 默认从 10 开始,获取 10 条数据

    qs.Limit(10, 20)
    // LIMIT 10 OFFSET 20 注意跟 SQL 反过来的
    

    删除数据

    beedb 提供了丰富的删除数据接口,请看下面的例子

    例子 1,删除单条数据

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

    Delete 操作会对反向关系进行操作,此例中 Post 拥有一个到 User 的外键。删除 User 的时候。如果 on_delete 设置为默认的级联操作,将删除对应的 Post

    相关文章

      网友评论

        本文标题:《go web 编程》第四章 访问数据库:使用 Beego or

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