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")
}
posted @   Lucky小黄人^_^  阅读(119)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-09-30 servlet中的“/”代表当前项目,html中的“/”代表当前服务器
2019-09-30 onkeyup的死循环问题
点击右上角即可分享
微信分享提示