MySQL GORM 的原生查询功能
阅读更多:MySQL 教程
前言
在使用 Golang 的 ORM 框架 GORM 进行数据库操作时,有时会需要直接访问 MySQL 数据库的查询接口,这就需要使用 GORM 的原生查询功能。
GORM 原生查询
GORM 提供了一些原生的查询方法,如 Raw
和 Exec
等。其中,Raw
方法可以用于执行任意 SQL 语句,并将返回结果映射为 Golang 结构体;Exec
方法用于执行任意 SQL 语句,不需要返回任何结果。
Raw 方法
Raw
方法的定义如下:
func (db *DB) Raw(sql string, values ...interface{}) *DB
其中,sql
参数是要执行的 SQL 语句,values...
是 SQL 语句中的参数。下面是一个示例:
type User struct {
ID uint `gorm:"primary_key"`
Name string
Age int
}
// 执行查询
var users []User
db.Raw("SELECT * FROM users WHERE age > ?", 18).Scan(&users)
在上面的示例中,我们查询了 users
表中年龄大于 18 岁的用户,并将查询结果映射为 User
结构体。
Exec 方法
Exec
方法的定义如下:
func (db *DB) Exec(sql string, values ...interface{}) *DB
其中,sql
参数和 values...
参数的含义与 Raw
方法相同。下面是一个示例:
// 执行 SQL 语句
db.Exec("UPDATE users SET age = ? WHERE name = ?", 20, "Tom")
在上面的示例中,我们更新了 users
表中名字为 Tom
的用户的年龄为 20 岁。
总结
通过本文,我们了解了 GORM 的原生查询功能,包括 Raw
和 Exec
方法。使用这些方法,我们可以方便地访问 MySQL 数据库的查询接口,并进行数据库操作。