分享
  1. 首页
  2. 文章

golang gorm

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

参考链接

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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏