zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Gorm-原生 SQL 查询和执行(一)

SQL执行 查询 原生 Gorm
2023-06-13 09:18:51 时间

Gorm是一个基于Go语言的ORM库,它提供了方便的数据库访问接口,使得开发人员可以轻松地操作数据库,而无需处理底层SQL语句的复杂性。但是,在某些情况下,Gorm提供的接口可能无法满足需求,这时我们就需要使用Gorm的原生SQL查询和执行功能。

原生SQL查询

在Gorm中执行原生SQL查询非常简单。我们只需要调用Raw方法,然后传入SQL查询语句和查询参数即可。例如,以下代码执行了一个简单的SELECT查询:

rows, err := db.Raw("SELECT * FROM users WHERE name = ?", "John").Rows()
defer rows.Close()
for rows.Next() {
    var user User
    db.ScanRows(rows, &user)
    fmt.Printf("%d %s\n", user.ID, user.Name)
}

在上面的代码中,我们使用了Raw方法执行了一个SELECT查询。查询语句中使用了占位符?来表示参数,然后我们将查询参数传递给Raw方法。查询结果是一个*sql.Rows对象,我们需要使用ScanRows方法将查询结果转换为Gorm的模型对象。

原生SQL执行

除了查询,我们还可以使用Gorm执行原生SQL语句。在Gorm中执行原生SQL语句的方法是Exec。例如,以下代码执行了一个简单的UPDATE语句:

result := db.Exec("UPDATE users SET name = ? WHERE id = ?", "John", 1)
fmt.Println(result.RowsAffected())

在上面的代码中,我们使用了Exec方法执行了一个UPDATE语句。查询语句中使用了占位符?来表示参数,然后我们将查询参数传递给Exec方法。执行结果是一个sql.Result对象,我们可以使用RowsAffected方法获取受影响的行数。