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")
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-09-30 servlet中的“/”代表当前项目,html中的“/”代表当前服务器
2019-09-30 onkeyup的死循环问题