当前位置: 首页 > wzjs >正文

有创意的婚纱网站模板做网站公司大型

有创意的婚纱网站模板,做网站公司大型,网络营销推广的主要形式为,建设银行甘肃省行网站文章目录建项目建库建表main.gouser.gocompany.go生成效果(更进一步)自定义dynamic SQL实践官方地址:https://gorm.io/zh_CN/gen/index.html 以mysql为例 建项目 go mod init 项目名称 go mod tidy建库建表 建数据库demo,正常…

文章目录

  • 建项目
  • 建库建表
  • main.go
  • user.go
  • company.go
  • 生成效果
  • (更进一步)自定义dynamic SQL实践

官方地址:https://gorm.io/zh_CN/gen/index.html

以mysql为例

建项目

go mod init 项目名称
go mod tidy

建库建表

建数据库demo,正常排序和字符集utf8mb4即可

在数据库内建表,可参考如下代码:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),role VARCHAR(50),age INT
);CREATE TABLE companies (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100)
);

main.go

安装gen

go get -u gorm.io/gen

前大半部分为官方快速入门的代码,后尝试创建用户的部分可自行调整。

package mainimport ("context""gorm-gen-demo/model""gorm-gen-demo/query""gorm.io/driver/mysql""gorm.io/gen""gorm.io/gorm""log"
)// 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() {dsn := "user:password@(127.0.0.1:3306)/demo?charset=utf8mb4&parseTime=True&loc=Local"    //替换成自己的,此句两次执行代码均保留// ------------------------------- 官方代码gormdb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {log.Fatalf("failed to connect database: %v", err)}g := gen.NewGenerator(gen.Config{OutPath: "query",Mode:    gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate model})g.UseDB(gormdb) // reuse your gorm db// Generate basic type-safe DAO API for struct `model.User` following conventionsg.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 codeg.Execute()// ------------------------------------上下两段代码可分两次执行db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})query.SetDefault(db)user := model.User{Name: "Modi", Age: 18}u := query.Userctx := context.Background()err = u.WithContext(ctx).Create(&user)if err != nil {log.Fatalf("failed to create user: %v", err)}}

其中尝试创建用户部分,query.SetDefault(db)句不可少,否则会报错panic: runtime error: invalid memory address or nil pointer dereference

接下来两个文件都是在根目录下的model文件夹下新建,定义数据库表结构所用

user.go

package modeltype User struct {ID   intName stringRole stringAge  int
}

company.go

package modeltype Company struct {ID   intName string
}

生成效果

在这里插入图片描述
在这里插入图片描述

(更进一步)自定义dynamic SQL实践

如果添加了自定义注解的sql查询,需要先gen生成,然后再调用自定义的函数查询!否则会报错,说不认识自定义的这个函数unresovled

代码:

// Dynamic SQL
type Querier interface {// SELECT * FROM @@table WHERE name = @name{{if role !=""}} AND role = @role{{end}}// FilterWithNameAndRole(name, role string) ([]gen.T, error)// 添加注解和函数注册!!!//// SELECT * FROM @@table WHERE id=@idGetByID(id int) (gen.T, error) // returns struct and error
}// main中添加绑定!!!
g.ApplyInterface(func(Querier) {}, model.User{})   // 绑定的是User结构体,所以只会在user.gen.go里注册和实现

写好注解和函数,进行g.Execute(),可以在user.gen.go里看到如下已经被注册的函数:

在这里插入图片描述

进行调用查询,添加代码:

	res, err := query.User.WithContext(context.Background()).GetByID(1)if err != nil {fmt.Printf("GetByID failed , err:%v\n", err)return}fmt.Printf("GetByID result : %v", res)

查询结果:

第一遍生成,第二遍才是在调用GetByID这个新自定义函数

在这里插入图片描述

http://www.dtcms.com/wzjs/805266.html

相关文章:

  • 免费.net网站空间网站做的好看的
  • wordpress 网站小模块百度外推排名代做
  • 企业网站一般内容包括哪些烟台元和网络科技有限公司
  • 制作视频网站开发本公司经营网站建设
  • 车培训网站建设免费把图片生成链接
  • wordpress发布图片志鸿优化设计电子版
  • 做网站比较专业的公司如何分析竞争对手网站
  • 网站推广方案有哪些给我免费看播放片
  • 哪个网站的地图可以做分析图响应式网站排名
  • 网站建设分录百度有哪些产品
  • 紫色网站手机网站自助建站系统
  • 织梦网站更改网站的导航泰州营销型网站建设
  • wordpress 批量爆破杭州seo论坛
  • 关于网站建设的问题网站推广优化网址
  • 爱奇艺做视频网站的平台商城网站建设
  • 网页微信版登陆辽源网站优化
  • 网站 建设在作用wap多用户网站
  • 东莞阿里巴巴网站建设网站建设hnshangtian
  • 广西响应式网站制作设计网名的花样符号
  • 成都市温江区建设局网站设计公司起名怎么起好
  • 如何用微信小程序做网站深圳美容网站建设
  • 做网站第一步做什么网站维护要什么
  • 什么网站免费可以做app为什么运行wordpress
  • 江苏建设人才网站世界500强企业中国
  • 怎么样在网上建设网站挣钱郑州seo排名优化公司
  • 网站内容优化的准则百度明星人气榜入口
  • 青岛模版网站建设网站建设运营协议书
  • 广州市公需课在哪个网站可以做自学室内装修设计教程
  • 购物网站答辩ppt怎么做网站建设要在哪学
  • 如何制作个人网站教程交友最好的网站建设