GORM连接数据库并实现增删改查操作 | 豆包MarsCode AI 刷题

51 阅读2分钟
  • GORM是go语言的ORM框架,不需要直接写SQL语句,通过简单的代码操作数据库。本文介绍GORM连接sqlite3数据库,实现基本的增删改查(CRUD)操作
  • sqlite是一个小型、功能齐全的SQL关系型数据库,内置于手机和大多数计算机中,GORM能够快速操作sqlite3实现增删改查操作

go语言环境

  • linux安装go语言环境rm -rf /usr/local/go && tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz
  • 配置go环境
    • vim ~/.bashrc
    • export PATH=$PATH:/usr/local/go/bin
    • source ~/.bashrc
  • 安装GORM库和sqlite3驱动
    • go get -u "gorm.io/driver/sqlite"
    • "go get -u gorm.io/gorm"

GORM连接sqlite3数据库

// 初始化 SQLite 数据库连接
db, err := gorm.Open(sqlite.Open("./users.db"), &gorm.Config{})
if err != nil {
	log.Fatalf("Failed to connect to database users: %v", err)
}
// 自动迁移 User 表
db.AutoMigrate(&User{})

定义模型

  • 定义一个结构体User,方便GORM操作模型,结构体User中的变量应该首字母大写
type User struct 
	Id uint `gorm:"primaryKey;autoIncrement"`
	Username string
	Password string
}

新增

  • 使用Create方法插入新数据db.Create(&User{Username: "zhangsan", Password: "123456"})由于主键Id会自增,不需要手动设置。
  • 上面的语句相当于insert into User(Username, Password) values ("zhangsan", "123456")

删除

  • 使用Delete方法删除数据db.Delete(&user, 1) //删除id为1的数据,相当于delete from User where Id = 1
  • 使用Delete方法批量删除数据db.Delete(&User{}, []int[1, 2, 3]),相当于delete from User where Id in (1, 2, 3)
  • 使用Delete方法条件删除数据db.Where("Username = ?", "zhangsan").Delete(&User{}),相当于`delete from User where Username = "zhangsan"
  • 以上方法是物理删除,真的从数据库中删除数据,其实GORM提供了gorm.DeletedAt用于实现软删除,会将DeleteAt置为当前时间,无法通过正常查询方法找到改数据,需要使用Unscoped查询软删除的数据

修改

  • 使用Update方法更新数据db.Model(&User{}).Where("Username = ?", "zhangsan").Updates("Username", "lisi"),相当于update User set Username = "lisi" where Username = "zhangsan"
  • 使用Update更新选定字段db.Model(&User{Id:1}).Select("Username").Updates(map[string]interface{}{"Username":"lisi", "Password":"654321"}),相当于update User set Username = "lisi" where Id = 1,只会更新Username字段

查询

  • 使用First方法查询数据First(&user, 1) //查找id为1的数据,相当于select * from User where Id = 1
  • 使用Find方法查询数据db.Where("username = ?", "zhangsan").Find(&users),相当于select * from User where username = "zhangsan"
  • 注意:使用First方法查询不到语句会返回ErrRecordNotFound错误,使用Find查询多条语句,查询不到数据不会返回错误

总结

  • 本文介绍了GORM和sqlite数据库,然后在linux中安装并配置go语言环境,最后安装GORM库和sqlite驱动并进行增删改查操作。参考go语言官网查看最新的安装指令,参考视频总结了这份学习笔记。