当前位置: 首页 > news >正文

Gorm的使用记录

Grom

日志

  • 当日志级别到info就是能够打印所有的sql

操作

  • 现在是存在泛型api和传统的api了
  • 更新为非零值
  • 将空字符设置进去
    • 第一种方式就是再类型结构体设置的时候struct 设置类型为sql.nullSting等 就能被设置为空值
    • GORM 对 map[string]interface{} 类型的更新数据,会强制更新所有指定字段(包括空值 / 零值),无需额外配置
    • 定义为指针类型就是可以是null,也可以是指针的"",给为null就是可以直接去更新
    • .Select(“Name”, “Age”) 使用select 显示指定就是可以更新
  • 只有updates 才会影响0值的更新,update是不会影响的

创建

  • resutl := db.Create(&user)
  • user.ID resutl .Error resutl .RowsAffected 这个就是调用Create会默认返回的信息
  • 批量插入 db.Create(user []User)
  • 批量插入优化版 db.CreateInBatches(user,2) 会分批次的去插入
  • 使用map插入 map[string]interface{}

查询语句

  • first(&user) 主键是升序排列
  • take(&user) 没有指定排序
  • last(&user) 主键降序
  • 以上方法找不到数据都会抛出异常
  • db.Model(&User{}).Where(“id in ?”,[]string{“1”,“2”})
  • 使用结构体添加

更新

  • db.Save(&user) 是一个save和update为一体的操作
  • db.Model().Where().Update()
    -选定字段Select() 忽略字段Omit()

删除

  • 软删除 gorm.Model 给sturct加上这个就是能软删除 Deleted gorm.Deleted
  • db.Unscoped().Delete()

多表关系

Belongs To
// `User` 属于 `Company`,`CompanyID` 是外键
type User struct {gorm.ModelName      stringCompanyID int//数据库中存储的字段  正常情况下需要去满足这个命名条件Company   Company  `gorm:"foreignKey:CompanyRefer"`//真实存储的数据
}type Company struct {ID   intName string
}
db.Create(&User{Name:"sdaf"Company:Colmpany{ID:1,//只有id就会直接插入Name:"acc"//会自动创建}
})
db.Omit("Company").Create()  这个就是会自动忽略关联关系的创建//查询的问题
db.Preload("company").First(&user)
has Many
// User 有多张 CreditCard,UserID 是外键
type User struct {gorm.ModelCreditCards []CreditCard `gorm:"foreignKey:UserRefer"`
}type CreditCard struct {gorm.ModelNumber    stringUserRefer uint
}err := db.Model(&User{}).Preload("CreditCards").Find(&users).Error
Many To Many

// User 拥有并属于多种 language,`user_languages` 是连接表
type User struct {gorm.ModelLanguages []*Language `gorm:"many2many:user_languages;"`
}type Language struct {gorm.ModelName stringUsers []*User `gorm:"many2many:user_languages;"`
}

Other

  • 还有一些细节就是有回调的钩子 创建前,创建后,等等操作
http://www.dtcms.com/a/590173.html

相关文章:

  • 手工木雕网站建设策划书计算机专业主要学什么内容
  • 蒙古文政务网站群建设工作方案c 做网站性能怎么样
  • 海口专业网站建设最简单的wordpress主题
  • 厦门企业做网站怎样加入网站
  • 门户网站网站开发北京公司注册费用
  • 网站数据库制作seo高级优化技巧
  • 俄语网站建设注意事项thinkphp和wordpress区别
  • STM32F103学习笔记-16-RCC(第4节)-STM32 标准外设库函数命名规则总览(以stm32f10x_rcc.c/h为例)
  • 第7章 nestjs服务端开发:通用业务框架设计
  • 低价网站建设联系方式企业网站后端模板
  • 嵌入式Linux——“大扳手”与“小螺丝”:为什么不该用信号量(Semaphore)去模拟“完成量”(Completion)
  • 哪个网站教做ppt网站优化主要工作有那些内容
  • 都江堰做网站糖果网站建设目的
  • 网站怎么建设以及维护网站维护能自己做吗
  • 湖南网站建设制作陈锦良厦门建设局
  • 做网站有哪些好处现在建设网站落后了
  • 汉中专业网站建设价格梨树县交通建设网站
  • 代码随想录 Q85.摆动序列
  • ESP32连接ThingsCloud上传设备数据(智慧小灯)
  • 网站设计公司圣辉友联一级a做爰片免费网站性恔
  • 【基于one-loop-per-thread的高并发服务器】--- Server模块
  • 免费网站推广网站在线怎么做网页啊
  • 泰安手机网站建设做校园文化的网站
  • 自助建站网站程序源码dw做网站弊端
  • 新城区网站建设做网站.服务器怎么买
  • 【教学类-98-01】20251109“兔子头像”(小班主题《小兔乖乖》)
  • 上海电子门户网站建设数据怎么用editplus做网站
  • iBiz开源:iBizPLM BOM插件来了
  • 8.游戏逆向-pxxx-获取GObject
  • 建立网站 数据分析网站怎么做动效