#gorm.model
type Model struct{
    Id uint `gorm:primaryKey`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt gorm.DeletedAt `gorm:"index"`
}
#模型定义
type User struct{
    gorm.Model
    Nmae string
}

#连接
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

#字段标签:column/type/size/primaryKey/unique/default/precision/scale/not null/autoincremen/
#autoCreateTime/autoUpdateTime/index/unqueindex/check/<-/->/-/
#特性:关联、Create/Save/Update/Find、预加载、事务、批量、SQL构建器、子查询、索引、Migration

###############################Select
db.First(&user)
db.Task(&user)
result:=db.Last(&user)
result.RowsAffected
result.Error
db.Model(&User{}).First(&result)
db.Table('users').Take(&result)
#主键检索
db.First(&user,10)
db.Find(&users,[]int{1,2,3})
db.Find(&users)
#where-string
db.Where("name =?","jinzhu").First(&user)
db.Where("name <> ?","jinzhu").Find(&users)
db.Where("name IN ?",[]string{"jinzhu","jin"}).Find(&users)
db.Where("name Like ?","%jin%").Find(&users)
db.Where("name = ? AND age < ?","jnzhu","22").Find(&users)
db.Where("created_at BETWEEM ? AND ?",lastweek,today).Find(&users)
#where-Struct&Map
db.Where(&User{Name:"jinzhu"}).First(&user)
db.Where(map[string]interface{}{"name":"jinzhiu"}).Find(&users)
db.Where([]int64{20,21,22}).Find(&users)
#内联where
db.First(&user,"id =?","string_p")
db.Find(&user,"name =?","jinzhu")
db.Find(&users,"name <> ?","jinzhu")
db.Find(&users,User{Age:20})
db.Find(&users,map[stirng]interface{"age":20})
#NOT where
db.Not("name =?","jinzhu").First(&user)
db.Not(map[string]interface{}{"name":[]string{"jinzhu"}}).Find(&users)
db.Not(User{Name:"jinzhu"}).First(&user)
db.Not([]int64{1,2}).First(&user)
#OR where
db.Where("role = ?","admin").Or("role =?","sp_amdin").Find(&users)
db.Where("name =?","jin").Or(User{name:"lin"}).Find(&users)
db.Where("name = ?","jinzhu").Or(map[string]interface{"name":"jinzhu"})

#Field
db.Select("name","age").Find(&users)
db.Select([]string{"name","age"}).Find(&users)
db.Table("users").Select("COALESE(age,?)",42).Rows()
#Order
db.Order("age desc,name").Find(&users)
db.Order("age desc").Order("name").Find(&users)
db.Clauses(......)
#Limit&Offset
db.Limit(3).Find(&users)
db.Limit(10).Find(&users1).Limit(-10).Find(&users)
db.Offset(3).Find(&users)
db.Limit(10).Offset(1).Find(&users)
db.Offset(10).Find(&user1).Offset(-1).Find(&user2)
#Group&Having
db.Model(&users{}).Select("name","sum(age)").Where("name like ?","group%").Group("name").First(&result)
db.Model(&User{}).Select("name").Group("name").Having("name =?","group").Find(&result)
db.Table("orders").Select("name").Group("name").Rows()
#Distinct
db.Distinct("name","age").Order("name","age").Find(&results)
#Joins
db.Model(&User{}).Select("user.name","email").Joins("left join on email.user_id=user_id").Scan(&result{})
db.Table("users").Select("users.name,eaml").Joins("left join eaml on eami.uid =user.id").Rows()
db.Table("users").Select("users.name,eaml").Joins("left join eaml on eami.uid =user.id").Scan(&result{})
db.Joins("JOIN email ON emails.uid=users.id").Where("age =?","666").Find(&user)
db.Joins("commany").Find(&users)
db.Table("users").Select("name").Where("name=?","An").Scan(&result)
db.raw("SELECT name FROM users WHERE name =?","li").scan(&result)
##############################高级查询
db.Model(&user{}).Limit(10).Find(&APIUser{]})
db.Clauses(clause.locking{Strength:"UPDATE"}).Find(&user)
db.Where("amount > (?)",db.Table('orders').Select("AVG(amount)").Find(&orders))
sbQuery:=db.Select("AVG(age)").Where("name LIKE ?","name%").Table("users")
db.Select("AVG(age)").Group("name").Having("AVG(age)>(?)",sbQuery).Find(&result)
db.Table("(?) as u",db.Model(&user{})).Select("name","age")->Where("age = ?",18).Find(&user{})
db.Where(db.Where("pizza =?","person")).Where(db.Where("size =?","small").Or("size=?","med")).Or(db.Where("pizz=?","hzz").Find(&pizza{}).Statement
db.Where("name1=@name OR name2=@name",sql.Named("name","jinzhju")).Find(&user)
db.Where("name1 = @name OR name2 =@name",map[string]interface{}{"name":"jinzhu"}).First(&user)
var result map[string]interface{}
db.Model(&user{}).First(&result,"id =?",1)
db.Table("user").Find(&result)
#FirstOrInit
db.FirstOrInit(&user,User{Name:"lin"})
db.Where(&user,User{Name:"lin"})->FirstOrInit(&user)
db.FirstOrInit(&user,map[string]interface{}{"name":"jinzhu"})
db.Where(&user,User{Name:"lin"}).Attrs(User{Age:20}).FirstOrInit(&user)
db.Where(&user,User{Name:"lin"}).Attrs("age",20).FirstOrInit(&user)
db.Where(User{Name:"lin"}).Assign(User{Name:"lin"}).FirstOrInit(&user)
db.FirstOrCreate(&user,User{Name:"non"})
db.Where(User{Name:"jinzhu"}).FirstOrCreate(&user)
db.Where(User{Name:"non"}).Attrs(User{Age:20}).FirstOrCreate(&user)
db.Where(User{Name:"jinzhu"}).Attrs(User{Age:20}).FirstOrCreate(&user)
db.Where(User{Name:"non"}).Assign(User{Age:20}).FirstOrCreate(&user)
db.Where(User{Name:"jin"}).Assign(User{Age:20}).FirstOrCreate(&user)
#FindInBatches
result:=db.Where("process =?",false).FindInBatches(&result,100,
    func(tx *gorm.DB,batch init)error{
        for _,result:=range result{}
    }
)
func(u *User)AfterFind(tx *gorm.DB)(err error){    
}
#pluck
db.Model(&users).Pluck("age",&age)
db.Model(&users{}).Pluck("name",&names)
db.Table("deleted-user").Pluck("name",&name)
db.Model(&user{}).Distinct().Pluck("name",&names)
db.Select("name","age").Scan(&users)
#Scopes
func Amound(db *gorm.DB) *gorm.DB{
    return db.Where("amount >?",1000)
}
db.Scopes(Amound).Find(&ordes)
#count
db.Model(&User{}).Where("name =?","jinzhu").Or("name =?","jinzhu").Count(&count)
db.Table("deleted_user").Count(&user)
db.Model(&User{}).Distinct("name").Count(&count)
##############################UPDATE
db.First(&user)
user.Name="jinzhu"
db.Save(&user)
db.Model(&User{}).Where("active =?",true).Update("name","hello")
db.Model(&user).Update("name","hello")
db.Model(&user).Where("active =?",true).Update("name","hello")
db.Model(&user).Updates(User{Name:"hello",Age:19})
db.Model(&user).Update(map[string]interface{]{"name":"hellow"}})
db.Model(&user).Select("name").Updates(map[string]interface{}{"name":"Li"})
db.Model(&result).Select("Name","age").Updates(User{Name:"new"})
#Hook
func (u *User)BeforeUpdate(tx *gorm.DB)(err error){
    return 
}
#批量更新
db.Model(User{}).Where("role =?","amdin").Updates(User{Name:"LI"})
db.Table("users").Where("id IN ?",[]int{10,11}).Updates(map[string]interface{}{"name":"liu"})
db.Model(&User{}).Update("name","jinzhu").Error
db.Model(&User{}).Where("1=1").Update("name","jinzhu")
db.Exec("UPDATE user SET name =?","jinzhu")
db.Session(&gorm.Sesion{AllowGlobalUpdate:true}).Model(&user{}).Update("name","jinzhu")
#更新的记录
result.RowsAffected
#根据子查询进行更新
db.Model(&user).Update("company_name",db.Model(&company{}).Select("name").Where("comp.id =user.company_id")))
db.Model(&user).UpdateColumn("name","hello")
db.Model(&user).UpdateColumns(User{Name:"he",Age:18})
db.Model(&user).Select("name","age").UpdateColums(User{Name:"he",Age:18})
##############################DELETE
db.Delete(&email)
db.Where("name =?","jinzhu").Delete(&eamil)
db.Delete(&User{},10)
db.Delete(&user,[]int{1,2,3})
func(u *User)BeforeDelete(tx *gorm.DB){
    return
}
db.Where("email LIKE ?","%jinzhu%"),Delete(Email{})
#软删除gorm.deleteat
#原生SQL
db.Raw("SELECT id,name FROM users Where id =?",3).scan(&result)
db.Exec("Drop Table users")
db,EXEC("UPDATE orders SET shipped_at=? where id In ?",time>Now(),[]int64{1,2,3})

##############################关联
#BelongsTO
type User struct{
    gorm.Model
    Name string
    CompanyID int
    Company Commany
}
type Commany struct{
    ID int
    Name string
}
#HasOne
type User struct{
    gorm.Model
    CreaditCard CreditCard
}
type CreaditCard struct{
    gorm.Model
    Number string
    UerId uint
}
#hasMany
type User struct{
    gorm.Model
    CreaditCards []CreaditCard
    ID int64    `gorm:"column:id"`
    UUID string `gorm:"primaryKey"`
}
type CreaditCard struct{
    gorm.Model
    Number string
    UserID uint
}
#ManyTOMany
type User struct{
    gorm.Model
    Languages []Lanaguage `gorm:"many2many:user_languages;"`
}
type Lanaguage struct{
    gorm.Model
    Name string `gorm:"index"`
}
#实体关联
db.Model(&user).Association("Languages").Find(&Languages)
db.Model(&user).Association("Languages").Append(&Lanaguage{Name:"DE"})
db.Model.Association("Languages").Repalce([]Lanaguage{L1,L2})
db.Model.Association("Languages").Delete(L1,L2)
db.Model(&user).Association("Languages").Clear()
db.Model(&user).Association("Languages").Count()
db.Select("Account").Delete(&user)
#关联标签foreignKey/references/polymorpic/polymorohicValue/many2many/joinForeignKey/joinReferences/constraint
#教程
tx:=db.WithContext(ctx)
tx.First(&user,1)
#链式调用
#钩子:BeforeSave/BeforeCreate/AfterCreate/AfterSave/BeforeUpdate/AterUpdate
#事务
db.Transaction(
    func(tx *gorm.DB)error{
        return nil
    }
)
tx:=db.Begin()
tx.Create()
tx.Rollback()
tx.Commit()
#AutoMigrate
db.AutoMigrate(&User{},&product{},&Order{})
db.Migrator().CreateTable(&User{]})
db.Migrator().HasTable("users")
db.Migrator().DropTable("users")
db.Migrator().RenameTable("users","user_infos")
db.Migrator().AddColumn(&user{},"name")
db.Migrator().DropColumn(&user{},"name")
db.Migrator().AlterColumn(&user{},"name")
db.Migrator().HasColumn(&user{},"name")
db.Migrator().RenameColumn(&user{},"name","new_name")
db.Migrator().CreateIndex(&user{},"index_name")
db.Migrator().DropIndex(&user{},"index_name")
db.Migrator().HasIndex(&user{},"index_name")
db.Migrator().RenameIndex(&user{},"index_name")
#
type User struct{
    ID string `gorm:"primaryKey;autoIncrement:false"`
    Name1 string `gorm:"uniquerIndex"`
    Name2 string `gorm:"index:index_number"`
    OID int64 `gorm:"index:idx_id;index:idx_oid,unique"`
    name3 string `gorm:"check:,name <> 'jinzhu'"`
    Commany Commany `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
}

gorm快捷查询手册相关推荐

  1. [JavaWeb-XML]XML_快捷查询方式(selector选择器,XPath)

    快捷查询方式: 1. selector:选择器* 使用的方法:Elements select​(String cssQuery)* 语法:参考Selector类中定义的语法2. XPath:XPath ...

  2. django快捷复习手册

    原创博客链接:django快捷复习手册 建立项目 django startproject projectname 启动服务 python manage.py runserver 9999#自己指定端口 ...

  3. ThinkPHP快捷查询

    从3.0版本开始,增加了快捷查询方式,可以进一步简化查询条件的写法,例如: 一.实现不同字段相同的查询条件 $User = M('User'); $map['name|title'] ='thinkp ...

  4. SQL Server 语句查询手册

    建表: CREATE TABLE  [DB.dbo].tableName (Stud_id int CONSTRAINT  constraintName1  not null primary key, ...

  5. 查询错误_三菱PLC快捷查询错误代码(全)

    干货来袭,齐全的三菱PLC错误代码快捷查询方法归类整理,请查收. 错误编号(D806*):0000错误讯息:NOERROR--无异常错误发生 异常内容及原因:无异常发生 方法:请检查主机与I/O扩充机 ...

  6. Qt开发技术:Qt富文本(三)Qt支持的HTML子集(查询手册)以及涉及的类

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  7. Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  8. goland gorm分组查询统计_golang gorm 计算字段和获取sum()值的实现

    计算表lb_ytt_user_money_log 中,字段money的和 代码如下: var total_money []int sqlstr := `select SUM(money) as tot ...

  9. python使用mysql实例教程_Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

最新文章

  1. python template用法_python中Template的使用介绍
  2. TensorRT学习笔记6 - IPlugin
  3. VTK:背景渐变BackgroundGradient用法实战
  4. vst3插件_2B Played Music发布用于劲爆舞曲风格的极端失真和剪辑插件2B Clipped XT
  5. VS2008调试总结
  6. 我的Serverless实战——引领云计算的下一个十年
  7. Java学习笔记9-2——JavaWeb
  8. php仿微信上传图片压缩,PHP仿微信多图片预览上传实例代码
  9. javaScript一种优化模式-初始化时分支
  10. numpy二维数组改变某些数_机器学习:Python常用库——Numpy库
  11. 苹果正式发布自研 M1 处理器;神州数码回应:未与华为就荣耀出售达成任何协议​;Ant Design 4.8.1发布|极客头条
  12. 单机手机消消乐php游戏源码,JS叠房子消消乐小游戏代码
  13. Onenote插件,云扩容
  14. Dynamic Web 2021Crack版,文档扫描和图像捕获
  15. 多元相关性分析_NAR:宏基因组网络分析工具MetagenoNets
  16. 用Redis存取两个人的共同好友名单
  17. PS钢笔抠图及商业案例
  18. 微信打不开链接怎么办,微信跳转外部浏览器打开
  19. 详解转换说明%-3d、%3d、%nd、%*2d、%0nd、%0.1f、%5.1f、%*d等含义
  20. 石英晶振的基本原理与电路设计

热门文章

  1. 问题解决: Oracle Database Configuration Assistant 失败
  2. e光的matlab,【e光嫩肤的效果怎么样】_功效_作用-大众养生网
  3. java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...
  4. week67(2021.10.23-2021.11.5)
  5. BTTCOJ 问题 G: 逃离地牢 树形动规
  6. 电子商务要学计算机吗 难学吗,电子商务专业对数学要求高吗
  7. vue 数组添加数据
  8. 电池pack结构_电池PACK是什么?锂电池包PACK结构设计需要考虑哪些因素?
  9. 钉钉开放平台“常见问题常见问题常见问题“
  10. linux php环境搭建教程,linux php环境搭建教程