gin+gorm极快入门
最近也是正在学习gin gorm得组合,跟着网上得视频敲了一个很简单得小项目,麻雀虽小五脏俱全,还是值得记录以下。
一、gin包管理
创建项目目录以后,首先创建以下几个包
这里我来分别说下他们的作用
1. conf : 配置文件
2. controllers : 控制模块, 主要用于处理业务逻辑
3. models :模型层, 存放模型以及和模型操作相关的函数
4. dao : 数据库层:用于连接数据库
5. routers :路由管理
6. static : 存放静态文件
7. utils : 存放工具包
8. views : 存放web页面
这里的templates是我用于练习用的。
二、gorm基本操作
2.1 连接数据库(dao包)
package dao
import "github.com/jinzhu/gorm"
import _ "github.com/go-sql-driver/mysql"
var (
DB *gorm.DB
)
// InitMysql 连接数据库
func InitMysql() (err error) {
dsn := "juntao:123456@tcp(127.0.0.1:3306)/myblog?charset=utf8mb4&parseTime=True&loc=Local"
DB, err = gorm.Open("mysql", dsn)
if err != nil {
return
}
return DB.DB().Ping()
}
2.2 创建模型(model包)
type Todo struct {
Id int `json:"id"`
Title string `json:"title"`
Status bool `json:"status"`
}
2.3 设置路由(router包)
package router
import (
"github.com/gin-gonic/gin"
"net/http"
"project/element/controller"
)
func SetupRouter() *gin.Engine {
router := gin.Default()
// 加载静态文件
router.Static("/static", "static")
router.LoadHTMLGlob("templates/*")
router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", nil)
})
}
2.4 业务层处理相关函数(controllers包)
注(一般的业务处理方式为:/*
url --> controller --> logic --> model
请求来了 --> 控制器 --> 业务逻辑 --> 模型层的增删改查
*/) 在这里由于项目过于简单,所以我没有创建logic包。
demo :
package controller
import (
"github.com/gin-gonic/gin"
"net/http"
"project/element/model"
)
func AddTodo (c *gin.Context) {
var todo model.Todo
// 获取数据
c.BindJSON(&todo)
// 存入数据库, 返回响应
err := model.CreateATodo(&todo)
if err != nil {
c.JSON(http.StatusOK, gin.H{"error": err.Error()})
}else {
c.JSON(http.StatusOK, todo)
}
}
2.5 启动项目(main函数)
package main
import (
"project/element/dao"
"project/element/model"
router2 "project/element/router"
)
func main() {
err := dao.InitMysql()
if err != nil {
panic(err)
}
// 延时关闭连接
defer dao.DB.Close()
// 自动创建表
dao.DB.AutoMigrate(&model.Todo{})
router := router2.SetupRouter()
router.Run(":8988")
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfibie
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13