无恒实验室联合GORM推出安全好用的ORM框架-GEN

GEN 是无恒实验室与 GORM 联合推出的 ORM 框架,提供安全易用的数据库操作。通过简单的配置和代码生成,GEN 可以自动生成基础查询和自定义 SQL 方法,直接绑定到结构体上,避免了研发过程中的误用。用户可以复用现有的 SQL 连接配置,并通过注释模板实现自定义 SQL 查询,确保安全性。框架支持事务、关联查询等高级功能,适用于日常开发。最佳实践包括清晰的目录结构和代码生成步骤。
摘要由CSDN通过智能技术生成

更详细的配置示例可以参照:最佳实践 DEMO(https://github.com/idersec/gendemo)

执行以下方法后即可在指定目录生成对应代码:

import (

“gorm.io/gen”

)

func main() {

// 指定生成代码的具体(相对)目录,默认为:./query

// 默认情况下需要使用WithContext之后才可以查询,但可以通过设置gen.WithoutContext避免这个操作

g := gen.NewGenerator(gen.Config{

// 最终package不能设置为model,在有数据库表同步的情况下会产生冲突,若一定要使用可以单独指定model package的新名字

OutPath: “…/dal/query”,

ModelPkgPath: “…/dal/model”, // 默认情况下会跟随OutPath参数,在同目录下生成model目录

/* Mode: gen.WithoutContext,*/

})

// 复用工程原本使用的SQL连接配置db(*gorm.DB)

// 非必需,但如果需要复用连接时的gorm.Config或需要连接数据库同步表信息则必须设置

g.UseDB(db)

peopleTbl := g.GenerateModelAs(“people”, “People”) // 指定对应表格的结构体名称

// 为指定的结构体或表格生成基础CRUD查询方法,ApplyInterface生成效果的子集

g.ApplyBasic(

model.User{},

peopleTbl,

)

// 为指定的数据库表实现除基础方法外的相关方法, 同时也会生成ApplyBasic对应的基础方法

// 可以认为ApplyInterface方法是ApplyBasic的扩展版

g.ApplyInterface(func(model.SearchByTenantMethod,model.UpdateByTenantMethod) {}, // 指定方法interface,可指定多个

model.Order{},

g.GenerateModel(“Company”), // 在这里调用也会生成ApplyBasic对应的基础方法

)

// 执行并生成代码

g.Execute()

}

3. 基础查询

执行生成代码后,GEN 会帮助生成基础的查询方法,并且绑定到结构体上,可以直接调用函数查询获取查询结果,不需要提前定义变量,参数和结构体字段类型绑定,防止研发过程中误用。

u := query.Use(db).User

u.WithContext(ctx).Select(u.Name, u.Age).Create(&user)

// INSERT INTO users (name,age) VALUES (“modi”, 18)

user, err := u.WithContext(ctx).Where(u.Name.Eq(“iDer”),u.Age.Gte(18)).First()

// SELECT * FROM users WHERE name = “iDer” and age>=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值