子句

Gen 也支援 GORM 子句,其用法類似於 Gorm。

Upsert

Gen 提供相容的 Upsert 支援,適用於不同的資料庫 例如 GORM

u := query.User

user := model.User{Name: "Modi", Age: 18, Birthday: time.Now()}

u.Save(&mode)
// equal to
u.Clauses(clause.OnConflict{UpdateAll: true}).Create(value).Error

提示

最佳化器提示允許控制查詢最佳化器,以選擇特定的查詢執行計畫,GORM 支援此功能,方法是使用 gorm.io/hints,例如

import "gorm.io/hints"

u := query.Use(db).User

users, err := u.WithContext(ctx).Clauses(hints.New("MAX_EXECUTION_TIME(10000)")).Find()
// SELECT * /*+ MAX_EXECUTION_TIME(10000) */ FROM `users`

索引提示允許在查詢規劃器感到困惑時,將索引提示傳遞給資料庫。

import "gorm.io/hints"

u := query.Use(db).User

users, err := u.WithContext(ctx).Clauses(hints.UseIndex("idx_user_name")).Find()
// SELECT * FROM `users` USE INDEX (`idx_user_name`)

users, err := u.WithContext(ctx).Clauses(hints.ForceIndex("idx_user_name", "idx_user_id").ForJoin()).Find()
// SELECT * FROM `users` FORCE INDEX FOR JOIN (`idx_user_name`,`idx_user_id`)"

白金贊助商

黃金贊助商

白金贊助商

黃金贊助商