Gen 指南

GEN 指南

GEN: 由程式碼產生功能支援的友善且安全的 GORM

概觀

  • 動態原始 SQL 的慣用語法和可重複使用的 API
  • 100% 型別安全的 DAO API,不含 interface{}
  • 資料庫到結構遵循 GORM 慣例
  • 底層為 GORM,支援 GORM 支援的所有功能、外掛和 DBMS

安裝

go get -u gorm.io/gen

快速入門

在應用程式中使用 gen 非常簡單,以下是它的運作方式

1. 以 Golang 編寫設定檔

package main

import "gorm.io/gen"

// Dynamic SQL
type Querier interface {
// SELECT * FROM @@table WHERE name = @name{{if role !=""}} AND role = @role{{end}}
FilterWithNameAndRole(name, role string) ([]gen.T, error)
}

func main() {
g := gen.NewGenerator(gen.Config{
OutPath: "../query",
Mode: gen.WithoutContext|gen.WithDefaultQuery|gen.WithQueryInterface, // generate mode
})

// gormdb, _ := gorm.Open(mysql.Open("root:@(127.0.0.1:3306)/demo?charset=utf8mb4&parseTime=True&loc=Local"))
g.UseDB(gormdb) // reuse your gorm db

// Generate basic type-safe DAO API for struct `model.User` following conventions
g.ApplyBasic(model.User{})

// Generate Type Safe API with Dynamic SQL defined on Querier interface for `model.User` and `model.Company`
g.ApplyInterface(func(Querier){}, model.User{}, model.Company{})

// Generate the code
g.Execute()
}

2. 產生程式碼

go run main.go

3. 在專案中使用產生的程式碼

import "your_project/query"

func main() {
// Basic DAO API
user, err := query.User.Where(u.Name.Eq("modi")).First()

// Dynamic SQL API
users, err := query.User.FilterWithNameAndRole("modi", "admin")
}

白金贊助商

金牌贊助商

白金贊助商

金牌贊助商