一、连接数据库
使用Gorm进行数据库查询,必须先连接数据库。
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
dsn := "user:password@tcp(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local" // 连接 MySQL 数据库
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
}
其中dsn是连接数据库的信息字符串。
二、定义数据库模型/结构体
使用Gorm进行高效的MySQL数据库查询,我们需要定义表格关联的模型/结构体。定义模型/结构体时,可以指定表格名、列名、数据类型等详细信息。
type User struct {
ID uint `gorm:"primary_key"`
Name string `gorm:"type:varchar(100)"`
Age int
Birthday time.Time
Email string `gorm:"type:varchar(100);unique_index"`
Password string
}
如果不指定,则使用默认值,例如表格名是结构体名的复数形式。但是,Gorm提供了灵活的选项,以便开发者自由地选择模型/结构体的映射规则。
三、Row查询
在Gorm中,可以使用db.First()方法查询单个行。就像这样:
//查询id=1的用户信息
var user User
db.First(&user, 1) // SELECT * FROM users WHERE id = 1;
//查询第一个匹配到的用户信息
var user User
db.Where(&User{Name: "jinzhu"}).First(&user)
//SELECT * FROM users WHERE name = 'jinzhu' limit 1;
四、Find查询
在Gorm中,可以使用db.Find()方法查询多个行。就像这样:
// 查询所有的用户
var users []User
db.Find(&users) // SELECT * FROM users;
// 条件查询
db.Where("age = ?", 20).Find(&users) // SELECT * FROM users WHERE age = 20;
五、创建记录
在Gorm中,可以使用db.Create()方法创建新的记录,就像这样:
// 创建新用户
db.Create(&User{Name: "jinzhu", Age: 18, Birthday: time.Now()})
// 批量插入
db.Create([]User{{Name: "jinzhu", Age: 18}, {Name: "jinzhu 2", Age: 20}})
六、更新记录
在Gorm中,可以使用db.Save()方法来更新记录。除此之外,还可以使用db.Updates()和db.UpdateColumn()方法来更新记录。
// 更新所有列
db.Save(&user)
// 更新选定列
db.Model(&user).Update("name", "hello")
// 更新多列
db.Model(&user).Updates(User{Name: "hello", Age: 18})
// 更新指定列
db.Model(&user).UpdateColumn("name", "hello")
// 基于条件更新
db.Table("users").Where("id = ?", 1).Update("name", "hello")
七、删除记录
在Gorm中,可以使用db.Delete()方法来删除记录。
// 删除单个记录
db.Delete(&User{}, 1)
// 删除所有符合条件的记录
db.Where("age = ?", 18).Delete(&User{})
// 硬删除记录(不使用软删除)
db.Unscoped().Where("age = ?", 18).Delete(&User{})
以上便是如何使用Gorm进行高效的MySQL数据库查询所需的全部内容。