在进行后端接口开发时,难免会接触数据库,但随着开发工具的迭代升级,如今已经出现了不需要写sql语句的ORM框架。本篇笔记就以GORM框架出发,记录从下载安装到成功跑第一个GORM程序的过程。
ORM全称是:Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。举例来说就是,我定义一个对象,那就对应着一张表,这个对象的实例,就对应着表中的一条记录。使用ORM框架就能以面向对象的方式操作数据库,而不是再花时间去设计SQL语句,有效地提高了开发人员的开发效率,降低数据库与上层应用的耦合。
gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。 详细信息请移步至GORM中文站
本文发布于2023-08-09,文中使用的gorm版本有极大概率与你正在使用的不一致,为了更好的使用gorm请移步官方中文文档GORM中文站
好,下面正文开始。
安装
如果没换源,请参考我上一篇文章:Gin框架快速入门| 青训营
之后就是下载并安装gorm,以mysql为例
go get -u github.com/jinzhu/gorm
go get gorm.io/driver/mysql
连接数据库
连接不同的数据库都需要导入对应数据的驱动程序,GORM已经贴心的为我们包装了一些驱动程序,只需要按如下方式导入需要的数据库驱动即可:
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
末尾的mysql需要替换为你的数据库类型,GORM 官方支持的数据库类型有:MySQL, PostgreSQL, SQLite, SQL Server 和 TiDB,这里我以mysql为例,如不同请参考官方文档。
运行一段示例代码
代码如下
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Product struct {
gorm.Model
Code string
Price uint
}
func main() {
// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
dsn := "user:password@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// 迁移 schema
db.AutoMigrate(&Product{})
// 创建新记录
db.Create(&Product{Code: "D42", Price: 100})
}
这段代码创建了一个products表,并且创建了一个记录。回头看看你的mysql数据库,发现多了一些表,但里面的字段多了几个,gorm.Model中的内容:GORM 定义一个 gorm.Model 结构体,其包括字段 ID、CreatedAt、UpdatedAt、DeletedAt,如果你没有懒得设计主键的话可以将它嵌入到你的结构体中,以包含这几个字段。gorm.Model的定义如下:
type Model struct {
ID uint `gorm:"primaryKey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}
下面说明一下mysql连接需要用到的dsn变量。
它的主要格式为:username:password@protocol(address)/dbname?param=value
- 其中username是你的数据库用户名,一般测试时用的是root
- password就是用户名对应的密码
- protocol是连接数据库用到的协议,一般为TCP
- address就是你数据库的地址
- /dbname就是你的数据库名称
- ?后面就是跟的一些额外的参数,详细参考github.com/go-sql-driv…