首页 > 其他分享 >gorm学习

gorm学习

时间:2023-05-03 23:00:11浏览次数:26  
标签:20 users db id 学习 result gorm user

1.查询
db.First&user)
// SELECT * FROM users ORDER BY id LIMIT 1;
db.Take(&user)
// SELECT * FROM users LIMIT 1;
db.Last(&user)
// SELECT * FROM users ORDER BY id DESC LIMIT 1;
result := db.First(&user)
result.RowsAffected // 返回找到的记录数
result.Error        // returns error

// 检查 ErrRecordNotFound 错误
errors.Is(result.Error, gorm.ErrRecordNotFound)
没有找到记录时,它会返回 ErrRecordNotFound 错误

type Article struct {
   Id          uint64 `json:"id"`
   Title       string `json:"title"`
   Content     string `json:"-"`
   Status      uint8  `json:"-"`
   CreateTime  uint64 `json:"-"`
}
像这样就只会select  ID和 title。

2.Find 至 map
var result map[string]interface{}
db.Model(&User{}).First(&result, "id = ?", 1)

var results []map[string]interface{}
db.Table("users").Find(&results)


3.指定表
db.First(&user) //需要指定tablename
db.Model(&User{})
db.Table("users")


4.条件
// sql
db.Where("name = ?", "jinzhu").First(&user)
// Struct
db.Where(&User{Name: "jinzhu", Age: 20}).First(&user)
// SELECT * FROM users WHERE name = "jinzhu" AND age = 20 ORDER BY id LIMIT 1;
// Map
db.Where(map[string]interface{}{"name": "jinzhu", "age": 20}).Find(&users)
// SELECT * FROM users WHERE name = "jinzhu" AND age = 20;
// 主键切片条件
db.Where([]int64{20, 21, 22}).Find(&users)
// SELECT * FROM users WHERE id IN (20, 21, 22);

5/连接
db.Model(&User{}).Select("users.name, emails.email").Joins("left join emails on emails.user_id = users.id").Scan(&result{})
db.Table("users").Select("users.name, emails.email").Joins("left join emails on emails.user_id = users.id").Scan(&result{}) //用别名就这种



6.FindInBatches
用于批量查询并处理记录
// 每次批量处理 100 条
result := db.Where("processed = ?", false).FindInBatches(&results, 100, func(tx *gorm.DB, batch int) error {
  for _, result := range results {
    // 批量处理找到的记录
  }

  tx.Save(&results)

  tx.RowsAffected // 本次批量操作影响的记录数

  batch // Batch 1, 2, 3

  // 如果返回错误会终止后续批量操作
  return nil
})

result.Error // returned error
result.RowsAffected // 整个批量操作影响的记录数

这样就不用手动分批查询了

学习:https://learnku.com/docs/gorm/v2/query/9733




标签:20,users,db,id,学习,result,gorm,user
From: https://www.cnblogs.com/gz-wod/p/17369865.html

相关文章

  • vue学习 第十一天 CSS3新特性 ---- 新增选择器(1、属性选择器 2、结构伪类选择
    CSS3新特性1、CSS3现状1)新增的CSS3特性有兼容性问题,ie9+才支持2)移动端支持优于PC端3.)不断改进中,应用相对广泛 2、CSS3新增选择器CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素。1)属性选......
  • vue学习 第十天(2) HTML5的新特性 ----- 语义化标签(布局标签)/ 多媒体标签(video、
    目标:能够说出3~5个HTML5新增布局和表单标签能够说出CSS3的新增特性有哪些 HTML5的新特性 HTML的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。新特性都有兼容性问题,基本是IE9+以上版本......
  • vue学习 第十天(1) css高级技巧 ----CSS用户界面样式 / vertical-align属性应用
    用户界面样式 1)鼠标样式cursorli{cursor:pointer;}设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。 2、轮廓线outline给表单添加outline:0;或者outline:none;样式之后,就可以去掉默认的蓝色边......
  • Transformer学习
    Transformer学习此帖用于整理回顾自己学transformer的一些问题和知识极好的博客和资料:Transformer模型详解-CSDN博客:原理讲的很清楚举个例子讲下transformer的输入输出细节及其他-知乎(zhihu.com):讲的是输入输出的细节Transformer论文逐段精读【论文精读】B站:李沐dalao......
  • vue学习 第九天(2) css高级技巧. ---- 精灵图 / 字体图片 / CSS三角
    学习目标:1)精灵图2)字体图标3)CSS三角4)CSS用户界面样式5)vertical-align属性应用6)溢出的文字省略号显示7)常见的布局技巧 1、精灵图1)需要精灵图的原因  (减少网页多张小图片的多次服务器请求)网页中有很多小的背景图,过多的图片。......
  • 机器学习预测给定生物DNA序列是编码序列还是非编码序列
    在生物学中,DNA序列通常指非编码序列,因为DNA是生物体内存储基因信息的一种生物大分子,具有一定的生物学特性和结构。然而,基于DNA序列的机器学习预测可以包括编码和非编码序列的任务。以下是一些基于DNA序列的机器学习应用:应用于非编码DNA序列的机器学习模型:基因预测:使用机器学习......
  • vue学习 第九天(1) 元素的显示与隐藏 display (不保留位置) / visibility (保留位置) /
    元素的显示与隐藏本质:让一个元素在页面中隐藏或者显示出来。1、display属性,隐藏后不保留位置1)display::none;隐藏对象2)display:block;除了转换为块级元素之外,同时还有显示元素的意思。display隐藏元素后,不再占有原来的位置。 2......
  • Tomcat-学习目录
    1、Tomcat-基本介绍【理论知识】https://www.cnblogs.com/ygbh/p/17368777.html2、安装JDKhttps://www.cnblogs.com/ygbh/p/17368832.html3、Linux-安装Tomcathttps://www.cnblogs.com/ygbh/p/17369008.html4、Tomcat配置文件解析https://www.cnblogs.com/ygbh/p/17......
  • linux学习笔记(29)linux共享目录,NFS,使用autofs实现NFS 自动挂载
     【1】NFS简介(1.1)什么是NFS NFS是NetworkFileSystem的缩写,即网络文件系统。英文NetworkFileSystem(NFS),是基于UDP/IP协议的应用,可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 NFS在文件传送或信息传送过程中依赖于RPC协议。RPC:远程过程调用(R......
  • Bootstrap学习笔记
    目录1总览2Bootstrap网格系统2.1核心特性2.2固定布局2.3响应式布局2.4行列对齐3Bootstrap基础组件4Bootstrap高级组件本文是笔者在学习Bootstrap框架时整理的笔记,通过本文,读者可以初步了解该框架的基本用法和前端开发的大体思路。1总览Bootstrap官网:https://getbootst......