Go gin框架学习笔记

安装gin框架

在golang命令行执行 go get -u github.com/gin-gonic/gin
使用方式如下:
首先gin.Default创建引擎

然后业务逻辑 engine.GET(“/url”,func(){})

启动服务端 engine.Run(“ip:端口”)
在这里插入图片描述

给浏览器返回JSON

在func中使用入参.JSON
gin.H是map[string]interface{} gin中的快捷方式,等价关系

获取浏览器给服务端的参数

在这里插入图片描述

取多个参数

在这里插入图片描述

获取form表单

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

获取 url参数

在这里插入图片描述

以下情况url匹配会冲突,有报错

在这里插入图片描述

参数绑定ShouldBind()参数里面是指针类型,并且获取的结构体字段要大写,以及添加Tag对应获取哪个字段

在这里插入图片描述

上传文件

FormFile()函数,里面是要上传的东西
在这里插入图片描述

重定向

在这里插入图片描述
访问/c,变成访问sogo, .Redirect(状态码,地址)
进入/a,跳转到/b, .Request.URL.Path=“/b”
在这里插入图片描述

Gin路由

任意访问方法
在这里插入图片描述
访问不存在的url,使用noroute
在这里插入图片描述

如果出现大量前缀相同的url,可以使用如下方法,分路由组
在这里插入图片描述
路由组支持嵌套
在这里插入图片描述

Gin 框架 中间件

多个函数都会用到的公共处理逻辑,如判断登录,权限验证,计算耗时等。
在这里插入图片描述
全局注册中间件,不需要每个函数都写m1
在这里插入图片描述
为路由组添加中间件
在这里插入图片描述
中间件注意事项,在gin框架中使用协程时,不要使用c,使用c.copy()
在这里插入图片描述

gin操作数据库,gorm框架

在这里插入图片描述
示例
在这里插入图片描述
orm语句
在这里插入图片描述
结构体与数据表的对应关系
在这里插入图片描述
使用orm会专注于开发,但会弱化sql能力
在这里插入图片描述
在内部简单项目可以使用orm,如果使用对性能要求较高场景,还是原生sql更为合适

安装gorm
go get -u github.com/jinzhu/gorm
在这里插入图片描述

实操:

func main() {
	//连接数据库
	db, err := gorm.Open("mysql", "root:root@(localhost:3306)/gin_orm?charset=utf8mb4&parseTime=True&loc=Local")
	if err != nil {
		fmt.Println("数据库错误", err)
		panic(err)
	}
	db.AutoMigrate(&UserInfo{})
	//创建插入的信息
	//user1 := UserInfo{1, "袁顺", "男", "go"}
	//db.Create(&user1)
	var user2 UserInfo
	//查询
	db.First(&user2)
	fmt.Printf("user2:%#v\n", user2)
	//更改
	db.Model(&user2).Update("hobby", "学习")
	fmt.Println(user2)
	//删除
	db.Delete(&user2)
	//关闭数据库
	defer db.Close()
}

// 数据表
type UserInfo struct {
	Id     uint
	Name   string
	Gender string
	Hobby  string
}

主要看上面的函数

gorm的主键

在这里插入图片描述
表明默认是结构体的负数,并且驼峰会转换为_,即小写
在这里插入图片描述
如果要更改表名,给结构体创建一个TableName方法
在这里插入图片描述
或者指定表名创建
在这里插入图片描述
gorm默认给列名字段分隔

给字段设置默认值
在这里插入图片描述
将零值,存入数据库
在这里插入图片描述

gorm查询

在这里插入图片描述
更新
在这里插入图片描述
在这里插入图片描述
字段增加
在这里插入图片描述
删除

在这里插入图片描述
在这里插入图片描述
以上是软删除,如果想彻底删除,
在这里插入图片描述

企业级项目结构

将不属于main包下的函数,拆分出去

Controller层

存放控制相关内容,所有的响应的web函数 可以存在这里
在这里插入图片描述
在这里插入图片描述

Dao层

数据库相关内容,放入该层
在这里插入图片描述
在这里插入图片描述

Models层,所有的模型,及模型的增删改查操作,都放在这里面

在这里插入图片描述
将controller中的方法进行拆分,controller中,不实现逻辑,只调用
在这里插入图片描述

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

在这里插入图片描述

路由层,各种请求的url,可以单独放一个文件下

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

main包下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tigeraowu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值