golang gorm

更多精彩内容free-programming-books六块腹肌数据记录:静阅读-列表-外国-page0书籍数据记录Golang GORM使用刘昊2018数据记录:静阅读-列表-外国-page5书籍数据记录无标题文章S_Lance · · 1837 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

参考链接

https://learnku.com/docs/gorm/2018

http://gorm.book.jasperxu.com/

package main

import (
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/go-sql-driver/mysql"
    "log"
)

type UserInfo struct{
    gorm.Model
    UserName string `gorm:"size:255;column:username"`
    Password string `gorm:"size:255;column:password"`
}

// 设置表名
func (UserInfo) TableName() string{
    return "user_info"
}

func main(){
    // 连接数据库
    //"user:password@/dbname?charset=utf8&parseTime=True&loc=Local"
    db, err := gorm.Open("mysql", "root:111111@/test?charset=utf8&parseTime=True&loc=Local")
    if err != nil{
        log.Println("err->", err)
    }
    defer db.Close()

    // 不存在表则自动生成
    if !db.HasTable(&UserInfo{}){
        db.AutoMigrate(&UserInfo{})
        log.Println("create table...")
    }

    // 创建数据
    user := UserInfo{UserName:"admin", Password:"111111"}
    db.NewRecord(user)
    db.Create(&user)

    if ! db.NewRecord(user){
        fmt.Println("create ok")
    }else{
        fmt.Println("create fail")
    }

    // 普通查询
    //select_data(db)

    // 条件查询
    //where_select(db)

    // 更新全部字段
    //update_all(db)

    // 更新某个字段
    //update(db)

    // 删除指定数据
    //delete(db)

    // 删除符合条件的所有数据
    //delete_all(db)
}

//  查询数据
func select_data(db *gorm.DB){
    // 获取第一条记录,按主键排序
    var u_first UserInfo
    db.First(&u_first)
    fmt.Println(u_first.UserName)
    fmt.Println(u_first.Password)

    // 查询最后一条数据
    var u_last UserInfo
    db.Last(&u_last)
    fmt.Println(u_last.UserName)
    fmt.Println(u_last.Password)

    // 查询所有记录
    var users []UserInfo
    db.Find(&users)
    for _, val := range users{
        fmt.Println(val.UserName)
        fmt.Println(val.Password)
    }

    // 使用主键获取记录
    var user_pk UserInfo
    db.First(&user_pk, 1)
    fmt.Println(user_pk.UserName)
    fmt.Println(user_pk.Password)

}

// 条件查询
func where_select(db *gorm.DB){
    // 获取第一个匹配记录
    var user UserInfo
    db.Where("username=?", "admin").First(&user)
    fmt.Println(user.UserName)
    fmt.Println(user.Password)


    // 获取所有匹配记录
    var users []UserInfo
    db.Where("username=?", "admin").Find(&users)
    for _, v := range users{
        fmt.Println(v.UserName)
        fmt.Println(v.Password)
    }

    // 查询链
    var u1 UserInfo
    db.Where("username=?", "admin").Where("password=?", "222222").First(&u1)
    fmt.Println(u1.UserName)
    fmt.Println(u1.Password)
}

// 更新全部字段
func update_all(db *gorm.DB){
    var user UserInfo
    db.Where("username=?", "admin").First(&user)
    user.UserName = "xiaoming"
    user.Password = "xiaoming"
    db.Save(&user)
}

// 更新某个字段
// 更新更改的字段,可以使用Update, Updates
func update(db *gorm.DB){
    var user UserInfo
    db.Where("username=?", "admin").Where("password=?", "222222").First(&user)
    db.Model(&user).Update("username", "zhangsan")
    fmt.Println(user.UserName)
    fmt.Println(user.Password)
}

//软删除
// 删除记录时,需要确保其主要字段具有值,GORM将使用主键删除记录,如果主要字段为空,GORM将删除模型的所有记录
func delete(db *gorm.DB){
    var user UserInfo
    db.Where("username=?", "admin").Where("password=?", "999").First(&user)
    db.Delete(&user)
}

// 删除所有匹配的数据, 软删除
func delete_all(db *gorm.DB){
    db.Where("password LIKE ?", "%33%").Delete(UserInfo{})
}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:更多精彩内容free-programming-books六块腹肌数据记录:静阅读-列表-外国-page0书籍数据记录Golang GORM使用刘昊2018数据记录:静阅读-列表-外国-page5书籍数据记录无标题文章S_Lance

查看原文:golang gorm

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1837 次点击  
加入收藏 微博
1 回复  |  直到 2019-11-15 14:07:55
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传