1、简介
ORM
Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作。
gorm
gorm就是基于Go语言实现的ORM库。
类似于Java生态里大家听到过的Mybatis、Hibernate、SpringData等。
Github
官方文档
2、如何使用Gorm
只要四步就能上手gorm,可以尽情的沉浸在毫无技术含量的CRUD世界。
2.1 下载gorm库
下载gorm库
go get -u github.com/jinzhu/gorm
这是比较原始的方式,现在有了go mod,我们可以更方便的配置,甚至不用配置。
写好代码,在文件下执行go build,go.mod会自动添加对于gorm的依赖包
github.com/jinzhu/gorm v1.9.10
当然,也可以手动添加这个依赖。
2.2 创建DB连接
建立数据库连接
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
func main() {
var err error
db, connErr := gorm.Open("mysql", "root:rootroot@/dqm?charset=utf8&parseTime=True&loc=Local")
if connErr != nil {
panic("failed to connect database")
}
defer db.Close()
db.SingularTable(true)
}
gorm支持很多数据源包括PostgreSQL、MySQL等。
这里连接的是MySQL,所以需要引用"github.com/jinzhu/gorm/dialects/mysql"驱动。
通过上面声明,已经获取数据库的连接。
db.SingularTable(true)这句的作用后面会提到。
2.3 创建映射表结构的struct
定义数据库表结构对应的struct
比如这里我们要操作的是表test表,表结构如下
CREATE TABLE `test` (
`id` bigint(20) NOT NULL,
`name` varchar(5) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
于是我们对应可以定义struct结构如下
type Test struct {
ID int64 `gorm:"type:bigint(20);column:id;primary_key"`
Name string `gorm:"type:varchar(5);column:name"`
<