首页 > 其他分享 >使用gorm需要注意的点

使用gorm需要注意的点

时间:2023-12-15 23:23:42浏览次数:29  
标签:group err gorm 字段 注意 使用 查询 Find

1、慎用CreatedAt、UpdatedAt和DeletedAt字段

数据库的字段要避开这created_at、updated_at、deleted_at字段,改为created_time、updated_time和deleted_time。

数据插入时,仅仅插入业务数据即可,created_at 和updated_at,deleted_at字段不用手动设置值,gorm自动维护这些字段的值

2、查询的时候,如果没有查到记录也算一个err,需要在正常理解的err之前判断,类似如下的顺序:

    err := db.
        Table(GroupChatTableName).
        Select("gc_status").
        Where(map[string]interface{}{
            "gc_id": gid,
        }).
        Find(&group).
        Error
    
    // 这个要在err前面,因为在gorm里找不到记录也算错误
    if db.RecordNotFound() {
        log.Errorf("query group chat not found")
        return 0, nil
    }
 
    if err != nil {
        log.Errorf("query group chat info by gid failed, err: %v", err)
        return 0, err
    }

Find查询结果是列表,First查询的是单条数据。
当 First、Last、Take 方法找不到记录时,GORM 会返回 ErrRecordNotFound 错误

在使用Raw自定义SQL查询时,使用Scan来接收数据,虽然Find也是可以接收的,但是Find主要还是用来带条件查询的,
链接到Raw后面时条件是不起作用的。所以用Scan函数单纯的接收数据就行了。

3、更新单个字段用update,但通过 map + updates才能更新多个字段,零值字段也会更新

标签:group,err,gorm,字段,注意,使用,查询,Find
From: https://www.cnblogs.com/beatle-go/p/17904348.html

相关文章

  • armbian安装CUPS打印机软件及使用,保姆级教程!
    首先你得有一个安装好armbian的盒子,比如Q21,玩客云等!安装CUPS跟着我的步骤操作,保证能用!1.更新Ubuntuapt-getupdate(获得软件更新列表)pt-getupgrade(安装需要更新的软件)或者apt-getupdate&&apt-getupgrade(一次不成功可以多试几次,建议update、upgrade分开执行,要不每次都要......
  • 使用router.replace解决路由跳转问题
    需求:A页面跳转到B页面,B页面带参跳转到C页面,C页面点击确定带参跳转回B页面。但是C页面点击返回按钮可返回到B页面,B页面点击返回按钮可返回到A页面。即A->B(带参)<->C(带参)在Vue3中,如果全部使用router.push带参跳转,则返回时路由跳转会变得很混乱。解决方法:B和C页面的相互跳转全部使......
  • 使用cobra对pod增删改查
    使用Cobra框架完成pod增删改查原创 cilliandevops 希里安 2023-12-1218:52 发表于四川近日见闻AntDesign5.12.2在近日发布,感兴趣的可以去看看更新了那些内容,我这边还只是简单的用了其vue社区版本AtlassianConfluenceDataCenter/Server模板注入漏洞......
  • Typora工具使用介绍
    markdown学习使用说明标题的使用说明#空格+内容(文章标题)eg#空格markdown学习##空格内容--二级标题###空格内容--三级标题....以此类推字体的使用说明粗体两边同时加两个※,※※学习※※斜体两边同时加一个※,※学习学习学习※斜体加粗加三个※两边※※※学习学习学习......
  • openGauss学习笔记-160 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-160openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-导出全局对象160.1导出全局对象openGauss支持使用gs_dumpall工具导出所有数据库公共的全局对象,包含数据库用户和组、表空间及属性(例如:适用于数据库整体的......
  • 在星光2使用RTL8811CU无线网卡的记录
    在星光2使用RTL8811CU无线网卡的记录1.硬件和软件基础条件硬件:StarFiveVisionFive2v1.3BCPU:JH71104CoresRISCV64GCMEM:4GBDisk:SandiskUltra32GBMicro-SDCard无线网卡:COMFASTCF-811AC802.11ac无线网卡无线网卡芯片:RTL8811CU无线网卡USB信息:0bda:c811Linu......
  • linux系统下rsync使用笔记
    rsync的功能rsync能够基于网络(含局域网和互联网)快速地实现多台主机间的文件同步工作rsync的特点rsync有独立的文件内容差异算法,会在传送前对两个文件进行比较,只传送两者内容间的差异部分,因此速度更快rsync的使用场景1、本地代码更新到测试服务器,我们一般采用git方式,测试服务......
  • 使用arthas排查慢接口原因
    下载软件Arthas项目首页:https://alibaba.github.io/arthas/index.html本地运行arthas;java-jararthas-boot.jar选择进程后,可以进入artha控制台;在idea中下载arthas插件找到要测试的方法,然后右键,如下图,即可复制命令行到粘贴板将自动复制的命令行粘贴到artha......
  • SpringBoot使用Async注解实现异步线程
    1、启动类增加@EnableAsync注解2、yml增加配置spring:task:execution:pool:max-size:8core-size:8keep-alive:60queue-capacity:1000thread-name-prefix:Asnyc-task-calc-3、编写配置类AsyncTaskConfigimp......
  • spring boot启动耗时分析-spring-startup-analyzer使用
    github地址:https://github.com/linyimin0812/spring-startup-analyzer1、安装curl-sShttps://raw.githubusercontent.com/linyimin0812/spring-startup-analyzer/main/bin/install.sh|sh 2、maven<parent><groupId>io.github.linyimin0812</groupI......