GORM GEN的使用

GORM GEN是GORM的代码生成工具,可以根据数据库表自动生成DAO层代码。

一、使用gentool生成

1、安装 gentool

go install gorm.io/gen/tools/gentool@latest

2、运行 gentool 自动生成model和query

官方样例如下:

gentool -dsn "user:pwd@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local" -tables "orders,doctor"

运行完以后在根目录下生成以下结构目录

model存放数据结构,query存放增删改查方法

二、使用gen代码生成

1、安装gen

go get -u gorm.io/gen

2、编写 gen代码

官方示例如下

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", // 定义 dao 文件输出目录
    Mode: gen.WithoutContext|gen.WithDefaultQuery|gen.WithQueryInterface, // generate mode  
    ModelPkgPath: "./output/entity", // 定义 model 文件输出目录
  })

  // 配置数据库连接信息
  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

  //生成单个表的model 若只为了生成model则不需要接受参数,如下生成所有表model的示例
  userModel := g.GenerateModel("menu_table")
  //生成所有表的model
  //g.GenerateAllTable()

  //根据model生成dao文件
  // Generate basic type-safe DAO API for struct `model.User` following conventions
  g.ApplyBasic(userModel)

  //根据所有model生成dao文件
  //g.ApplyBasic(g.GenerateAllTable()...)

  //对于已经存在model的情况,可以传入该model的实例,如下所示
  //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) {}, userModel)

  //执行
  // Generate the code
  g.Execute()
}

3、运行以生成代码文件

go run main.go

4、使用生成的代码

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值