子句

生成器也支持 GORM 子句,它们的使用方式与 Gorm 类似。

Upsert

生成器为不同的数据库提供兼容的 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`)"

铂金赞助商

黄金赞助商

铂金赞助商

黄金赞助商