关于GORM
GORM是一个用于Go语言的ORM(对象关系映射)库,它可以帮助开发者简化数据库操作。本文将介绍如何入门使用GORM,并提供一些基本的示例代码。
1:安装GORM
要开始使用GORM,首先需要安装它。你可以使用go get命令来安装GORM。在终端中运行以下命令:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
这将自动下载并安装最新版本的GORM。
2:导入GORM包
安装完成后,在你的Go代码中使用import语句导入GORM包:
import "gorm.io/gorm"
这样就可以在代码中使用GORM提供的功能了。
ps:这里如果你用的是goland这款软件,你只需要将鼠标移动到爆红的地方,然后按住alt+enter键,这样就会自动导入了
3:连接数据库
在使用GORM之前,需要先连接到数据库。我这里选择的是mysql数据库。我们就需要使用GORM提供的gorm.Open函数来连接数据库。我们则需要提供数据库的连接信息,例如数据库类型、主机名、端口号、用户名、密码等。下面就是连接的代码:
dsn := "user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
// 处理连接错误
}
例如我的就是
dsn := "root:1234@tcp(127.0.0.1:3306)/golang_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
这里我的用户名是root,密码就是1234,端口是3306,数据库的名字叫golang_db
4:定义数据模型
在使用GORM进行数据库操作之前,需要定义模型结构。使用GORM的结构体标签来定义模型结构。你可以在结构体字段上添加标签来指定字段名、数据类型、约束等信息。以下是一个定义用户模型的示例:
type Product struct {
gorm.Model
Code string
Price uint
}
在上面的代码中,我们定义了一个Product结构体,其中Product结构体包含了gorm.Model,它会自动添加一些常用的字段,如ID、CreatedAt(创建时间)、UpdatedAt(更新时间)和DeletedAt(是否删除)。
5:执行数据库操作
定义好数据模型后,我们接下来就可以使用GORM提供的API来执行数据库操作了。以下是curd:
插入数据
func insert(db *gorm.DB) {
//插入数据
p := Product{
Code: "1001",
Price: 100,
}
db.Create(&p)
}
更新
func update(db *gorm.DB) {
var p Product
db.First(&p, 1)
db.Model(&p).Update("Price", 1000)
// db.Model(&p).Update(Product{Price: 1001, Code: "1002"}) //仅更新非零字段
}
查询
func find(db *gorm.DB) {
var p Product
db.First(&p, 1)
fmt.Printf("p: %v\n", p)
//db.First(&p, "code=?", "1001") //查找code字段为1001的记录
//fmt.Printf("p: %v\n", p)
}
删除
func delete(db *gorm.DB) {
//添加删除标记,不会真的删除
var p Product
db.First(&p, 1)
db.Delete(&p, 1)
}
其中,db是一个GORM的数据库连接对象。Create函数用于插入一条记录,First函数用于查询第一条记录,Model函数用于更新记录,Delete函数用于删除记录。
这里我们一般把创建放到init函数里面
// 系统会自动帮忙调用
func init() {
dsn := "root:runaway0926@tcp(127.0.0.1:3306)/golang_db?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db = d
}
以上为我学习的笔记,如有不足请见谅!!!