条項

GenはGORMの条項もサポートしており、その使用方法はGormと似ています。

Upsert

Genは、さまざまなデータベースにGORMと同様のUpsertのサポートを提供しますのような

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`)"

プラチナスポンサー

ゴールドスポンサー

プラチナスポンサー

ゴールドスポンサー