这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
gorm的框架学习 在学习 Gorm 前,你应该先了解什么是 ORM。ORM 全称 Object–relational mapping,即对象关系映射,是一种用于在关系数据库和面向对象的编程语言堆之间转换数据的编程技术(Wikipedia,并非只有面向对象语言才支持 ORM,事实上,Go 就不是一个面向对象语言)。通过 ORM 技术,我们可以将关系数据库中某个数据表的结构关联到某个类 / 结构体上,并通过修改类 / 结构体实例的方式轻易的完成数据库增删改查(CRUD)的任务。通过 ORM 技术,我们得以以一种更加友好且高效的方式,在尽量不接触 SQL 语句的情况下操作数据库。 其支持多种数据库的接入,例如MySQL,PostgreSQL,SQLite,SQL Server,Clickhouse。此框架的特点,弱化了开发者对于sql语言的掌握程度,使用提供的API进行底层数据库的访问。 GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server 这个框架提供一种更为方便的方式可以不用sql语句来进行数据库的操作,包括其中的数据和记录的增加,删除,查询以及修改。
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
// ex: root:rootpass@tcp(127.0.0.1:3306)/mydb?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s
dsn := "user:pass@tcp(ip:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}
连接池
sqlDB, err := db.DB()
// SetMaxIdleConns 设置空闲连接池中连接的最大数量
sqlDB.SetMaxIdleConns(10)
// SetMaxOpenConns 设置打开数据库连接的最大数量。
sqlDB.SetMaxOpenConns(100)
// SetConnMaxLifetime 设置了连接可复用的最大时间。
sqlDB.SetConnMaxLifetime(time.Hour)
SQL操作
新增记录
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
result := db.Create(&user) // 通过数据的指针来创建
user.ID // 返回插入数据的主键
result.Error // 返回 error
result.RowsAffected // 返回插入记录的条数