Go使用GORM ORM套件查詢時顯示SQL的方式如下。
範例環境:
- Go 1.19
- GORM 2.0 (gorm.io/gorm v1.24.2)
- PostgreSQL 14
事前要求
參考「Golang GORM PostgreSQL基本設定」設定資料庫及安裝GORM套件。
範例
呼叫gorm.Open
時傳入gorm.Config{Logger: logger.Default.LogMode(logger.Info)}
則GORM查詢時會印出實際執行的SQL。
main.go
package main
import (
"fmt"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
)
type Employee struct {...}
const (...)
func getGormDB() *gorm.DB {
dsn := fmt.Sprintf(...)
gormDB, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
Logger: logger.Default.LogMode(logger.Info), // log GORM query sql
})
if err != nil {...}
return gormDB
}
func main() {
db := getGormDB()
emp := Employee{}
db.First(&emp) // SELECT * FROM employee ORDER BY id LIMIT 1;
}
或使用gorm.DB.Debug
進行query操作,則僅印出該操作的SQL的log。
main.go
package main
import (...)
type Employee struct {...}
const (...)
func getGormDB() *gorm.DB {...}
func main() {
db := getGormDB()
emp := Employee{}
db.Debug().First(&emp) // SELECT * FROM employee ORDER BY id LIMIT 1;
}
測試
執行在console印出以下。
2022/12/25 01:54:02 /.../go-demo/main.go:49
[2.618ms] [rows:1] SELECT * FROM "employee" ORDER BY "employee"."id" LIMIT 1
沒有留言:
張貼留言