GORM是Go语言中的一个开源的对象关系映射(Object Relational Mapping)库,用于简化与数据库的交互。它提供了一种便捷的方式来操作数据库,可以通过GORM定义和操作数据库表,而无需直接编写SQL语句。GORM 支持多种数据库,包括MySQL、PostgreSQL、SQLite、SQL Server等。它提供了丰富的功能,包括模型定义、数据查询、数据插入、更新、删除等。通过GORM,我们可以使用结构体定义数据库表的模型,然后通过简单的API调用实现数据库的增删改查操作,从而更加高效地处理数据。
作为一名有Java开发经验的go新手,我看到GORM首先联想到的是Mybatis。GORM在Go语言中类似于MyBatis在Java中的作用。它们都是对象关系映射(ORM)库,用于简化数据库操作,并提供了类似的功能。它们都遵循了“面向对象”的设计思想,将数据库表映射为对象,使得开发者可以更加方便地处理数据库数据,而无需直接编写SQL语句。 下面,我将基于后端基础班第3、4节课的示例程序源代码演示如何使用GORM连接数据库,并实现增删改查等基本操作。1.连接数据库
var db *gorm.DB
func Init() error {
var err error
dsn := "root:1234@tcp(127.0.0.1:3306)/community?charset=utf8mb4&parseTime=True&loc=Local"
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
dbErr := db.AutoMigrate(&Topic{}, &Post{}, &User{})
if dbErr != nil { println(err) }
return err
}
在 Init 函数中,首先通过 gorm.Open 方法打开数据库连接,然后使用 db.AutoMigrate方法自动创建或更新数据库表结构,以确保 Topic、Post 和 User 这三个数据结构对应的表存在于数据库中。
2.增加和查询
func (*PostDao) CreatePost(post *Post) error {
if err := db.Create(post).Error; err != nil { return err}
return nil
使用GORM的 Create 方法将 post 结构体插入到数据库表中,如果插入过程中出现错误,则返回相应的错误;如果插入成功,则返回 nil 错误。其中post是包含对应数据库信息的自定义的结构体。
func (*PostDao) QueryPostById(id int64) (*Post, error) {
var post Post
err := db.Where("id = ?", id).Find(&post).Error
if err == gorm.ErrRecordNotFound { return nil, nil }
if err != nil { return nil, err }
return &post, nil
}
PostDao 结构体的 QueryPostById 函数用于根据给定的 id 从数据库中获取对应的帖子。它会根据提供的 id 条件进行查询,如果找到匹配的帖子,则返回该帖子的数据作为 Post结构体指针,并返回 nil 错误。该函数使用了GORM的Where方法通过id字段查询数据库中对应的数据。
3.修改和删除
func (dao *PostDao) UpdatePostById(id int64, content string) error {
var post Post
result := db.First(&post, id)
if result.Error != nil { return result.Error}
post.Content = content
result = db.Save(&post)
if result.Error != nil { return result.Error}
return nil
}
func (dao *PostDao) DeletePostById(id int64) error {
result := db.Delete(&Post{}, id)
if result.Error != nil { return result.Error}
return nil
}
这两个函数分别用于根据id修改和删除数据库中的帖子数据。UpdatePostById 函数接受id和新的内容作为参数,通过id查找帖子记录,然后更新内容并保存到数据库。DeletePostById 函数接受id作为参数,直接从数据库中删除相应的帖子记录。
总结
数据库是后端的核心组成之一,学习GORM为我使用go进行数据库操作和进行后续的项目开发奠定了基础。