执行SQL语句

这篇笔记我们介绍如何在GORM中执行原生SQL语句。

执行查询语句

我们可以使用Raw()函数执行SQL查询语句,查询语句中可以使用?占位符用来设置参数,下面是一个例子。

package main

import (
    "fmt"
    "github.com/gacfox/demoorm/conf"
    "github.com/gacfox/demoorm/model"
)

func main() {
    conf.InitDb()

    var products []model.Product
    sql := "select * from t_product where product_id=?"
    result := conf.Db.Raw(sql, 1).Find(&products)

    fmt.Printf("共%v条记录\n", result.RowsAffected)
    for _, product := range products {
        fmt.Println(product)
    }
}

注意:禁止使用字符串拼接SQL方式进行查询和更新,任何时候我们都应该使用占位符方式设置SQL中的参数,字符串拼接SQL很容易造成SQL注入漏洞。

执行更新语句

执行插入、更新、删除语句我们可以使用Exec()函数实现,下面是一个例子。

package main

import (
    "fmt"
    "github.com/gacfox/demoorm/conf"
)

func main() {
    conf.InitDb()

    sql := "update t_product set product_name=? where product_id=?"
    result := conf.Db.Exec(sql, "苹果", 1)

    fmt.Printf("共%v条记录\n", result.RowsAffected)
}
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。