Go使用GORM ORM套件做select count筆數查詢的方式如下。
範例環境:
- Go 1.19
- GORM 2.0 (gorm.io/gorm v1.24.2)
- PostgreSQL 14
事前要求
參考「Golang GORM PostgreSQL基本設定」設定資料庫及安裝GORM套件。
參考「Golang GORM 條件查詢」了解GORM的where查詢。
範例
GORM使用gorm.DB.Count(count *int64)
查詢筆數;參數count *int64
為接收count結果的pointer變數。在前使用gorm.DB.Model
指定查詢的model資料表。
搭配gorm.DB.Find
同時查詢資料及筆數,但實際上是兩次select,可直接用len
取得查詢結果的slice長度即可。
main.go
package main
import (
"fmt"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/schema"
)
type Employee struct {
ID int64 // primary key, column name is `id`
Name string // column name is `name`
Age int // column name is `age`
CreatedAt time.Time // column name is `created_at`
}
const (...)
func getGormDB() *gorm.DB {...}
func main() {
db := getGormDB()
var count int64
db.Model(&Employee{}).Where("age > ?", 30).Count(&count) // SELECT count(1) FROM employee WHERE age > 30;
fmt.Println(count) // 2
emps := []Employee{}
db.Where("age > ?", 30).Find(&emps).Count(&count)
fmt.Println(emps) // [{3 tony 45 2022-12-22 22:05:09.83327 +0000 UTC} {1 john 33 2022-12-22 21:56:37.061419 +0000 UTC}]
fmt.Println(count) // 2
}
沒有留言:
張貼留言