- 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数据库
db, err := gorm.Open(sqlite.Open("./users.db"), &gorm.Config{})
if err != nil {
log.Fatalf("Failed to connect to database users: %v", err)
}
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语言官网查看最新的安装指令,参考视频总结了这份学习笔记。