golang 使用 gorm 查询数据 demo

内容来自对 chatgpt 的咨询

题目

假设你有一张学生数据库表,需要通过golang 的gorm查询某个id的学生实体

查询 demo

在这段代码中,"student"变量是一个Student类型的结构体,用于存储查询结果。我们通过调用gorm.DB的Where方法和 First 方法,将第一个符合条件的结果存储到了"student"中。查找结果为空,返回一个gorm.ErrRecordNotFound 错误。

package main

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
    "log"
)

type Student struct {
    ID      int    `gorm:"primary_key"`
    Name    string `gorm:"not null"`
    Age     int    `gorm:"not null"`
    Grade   string `gorm:"not null"`
    Address string `gorm:"not null"`
}

func main() {
    db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    var student Student
    err = db.Where("id = ?", 1).First(&student).Error
    if err != nil {
        if err == gorm.ErrRecordNotFound {
            log.Print("No record found")
        } else {
            log.Print("Query failed", err)
        }
    } else {
        log.Printf("Found student: %+v", student)
    }
}

特别提醒

当你使用First,Take,Last方法且 Gorm 未找到任何记录时,Gorm会返回 gorm.ErrRecordNotFound 错误。但是,对于其他查询方法如Find,如果未找到任何记录,Gorm 不会 返回 gorm.ErrRecordNotFound 错误,而是返回一个零值对象且错误为nil。

使用 Find 查询的案例。

var students []Student
err := db.Where("id = ?", 1).Find(&students).Error
if err != nil {
    log.Print("Query error: ", err)
}
if len(students) == 0{
    log.Print("No records found")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值