gorm gen 的用法
第一步
dsn := "root:ServBay.dev@tcp(127.0.0.1:3306)/nodeadmin?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
fmt.Println("connect database success", db)
第二步
g := gen.NewGenerator(gen.Config{
OutPath: "./query", //生成query路径
ModelPkgPath: "./model", //生产模型路径
Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode
})
g.UseDB(db) // reuse your gorm db
allModels := g.GenerateAllTable()
// 为所有生成的模型应用接口
for _, model := range allModels {
g.ApplyInterface(func(Querier) {}, model)
}
// Generate basic type-safe DAO API for struct `model.User` following conventions
//g.ApplyBasic(model.LaUser{})
// Generate Type Safe API with Dynamic SQL defined on Querier interface for `model.User` and `model.Company`
//g.ApplyInterface(func(Querier) {}, model.LaUser{})
// Generate the code
g.Execute()
第三步
// 设置默认数据库连接
query.SetDefault(db)
//ctx := context.Background()
user, err := query.LaUser.Where(query.LaUser.Username.Eq("asd")).First()
fmt.Println(user, err)
users, err := query.LaUser.FilterWithNameAndRole("asd", "")
fmt.Println(users, err)
动态查询
type Querier interface {
// SELECT * FROM @@table WHERE username = @username{{if sn !=""}} AND sn = @sn{{end}}
FilterWithNameAndRole(username, sn string) ([]gen.T, error)
}
users, err := query.LaUser.FilterWithNameAndRole("asd", "")
fmt.Println(users, err)

