IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

Gin+Gorm小项目

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

目录

  • Gin+Gorm小项目
    • 创建项目
    • 引用静态文件
    • 搭建架子
    • 创建数据库
    • 添加功能
    • 查找功能
    • 修改功能
    • 删除功能
    • 总代码

Gin+Gorm小项目

创建项目

109_1.png
109_2.png

E:\gostudent\gin\bubble>go mod tidy      //增加缺失的包,移除没用的包

package main

import (
   "github.com/gin-gonic/gin"
   "net/http"
)

func main() {
   r := gin.Default()
   //告诉gin框架去哪里找模板文件
   r.LoadHTMLGlob("templates/*")
   r.GET("/", func(c *gin.Context) {
      c.HTML(http.StatusOK, "index.html", nil)
   })
   r.Run(":9090")
}

109_3.png

引用静态文件

109_4.png
109_5.png
109_6.png

搭建架子

package main

import (
   "github.com/gin-gonic/gin"
   "net/http"
)

//Tode Model
type Tode struct {
   ID int `json:"id"`
   Title string `json:"title"`
   Status bool `json:"status"`
}

func main() {
   //创建数据库
   //sql: CREATE DATABASE bubble;
   //连接数据库
   //遇事不决写注释
   r := gin.Default()
   //告诉gin框架模板文件引用的静态文件去哪里找
   r.Static("/static","static")
   //告诉gin框架去哪里找模板文件
   r.LoadHTMLGlob("templates/*")
   r.GET("/", func(c *gin.Context) {
      c.HTML(http.StatusOK, "index.html", nil)
   })

   //v1 api
   v1Group := r.Group("v1")
   {
      //待办事项
      //添加
      v1Group.POST("/todo", func(c *gin.Context) {

      })
      //查看所有的代办事项
      v1Group.GET("/todo", func(c *gin.Context) {

      })
      //查看某一个代办事项
      v1Group.GET("/todo/:id", func(c *gin.Context) {

      })
      //修改某一个待办事项
      v1Group.PUT("/todo/:id", func(c *gin.Context) {

      })
      //删除
      v1Group.DELETE("/todo/:id", func(c *gin.Context) {

      })
   }

   r.Run(":9090")
}

创建数据库

109_7.png

func initMySQL()  (err error)  {
   dsn := "root:123456@tcp(127.0.0.1:3306)/bubble?charset=utf8mb4&parseTime=True&loc=Local"
   DB, err = gorm.Open("mysql",dsn)
   //测试连通性
   err = DB.DB().Ping()
   return
   //return DB.DB().Ping()
}

func main() {
   //创建数据库
   //sql: CREATE DATABASE bubble;
   //连接数据库
   err := initMySQL()
   if err != nil {
      //可以搞个日志
      panic(err)
   }
   //模型绑定
   DB.AutoMigrate(&Tode{})   //todos
   defer DB.Close()  //程序退出,关闭数据库

添加功能

      //待办事项
      //添加
      v1Group.POST("/todo", func(c *gin.Context) {
         //前端页面填写待办事项,点击提交,会发请求到这里
         //1. 从请求中把数据拿出来
         var todo Tode
         c.BindJSON(&todo)
         //2. 存入数据库
         err = DB.Create(&todo).Error
         //3. 返回响应
         if err != nil {
            c.JSON(http.StatusOK,gin.H{"error": err.Error()})
         }else {
            c.JSON(http.StatusOK, todo)
            //c.JSON(http.StatusOK, gin.H{
            // "code": 200,
            // "msg" : "success",
            // "data": todo,
            //})
         }


109_8.png
109_9.png

查找功能

//查看所有的代办事项
v1Group.GET("/todo", func(c *gin.Context) {
   //查询todo这个表里的所有数据
   var todeList []Tode
   err := DB.Find(&todeList).Error
   if err != nil {
      c.JSON(http.StatusOK, gin.H{"error": err.Error()})
   }else {
      c.JSON(http.StatusOK, todeList)
   }
})
    //查看某一个代办事项
      v1Group.GET("/todo/:id", func(c *gin.Context) {

      })

109_10.png

修改功能

 //修改某一个待办事项
      v1Group.PUT("/todo/:id", func(c *gin.Context) {
         id, ok := c.Params.Get("id")
         if !ok {
            c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
            return
         }
         var todo Todo
         if err = DB.Where("id=?", id).First(&todo).Error; err!=nil{
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
            return
         }
         c.BindJSON(&todo)
         if err = DB.Save(&todo).Error; err!= nil{
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
         }else{
            c.JSON(http.StatusOK, todo)
         }
      })

删除功能

   //删除
      v1Group.DELETE("/todo/:id", func(c *gin.Context) {
         id, ok := c.Params.Get("id")
         if !ok {
            c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
            return
         }
         if err = DB.Where("id=?", id).Delete(Todo{}).Error;err!=nil{
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
         }else{
            c.JSON(http.StatusOK, gin.H{id:"deleted"})
         }
      })

总代码

package main

import (
   "github.com/gin-gonic/gin"
   "github.com/jinzhu/gorm"
   _ "github.com/jinzhu/gorm/dialects/mysql"
   "net/http"
)

var (
   DB *gorm.DB
)

//Tode Model
type Todo struct {
   ID int `json:"id"`
   Title string `json:"title"`
   Status bool `json:"status"`
}

func initMySQL()  (err error)  {
   dsn := "root:123456@tcp(127.0.0.1:3306)/bubble?charset=utf8mb4&parseTime=True&loc=Local"
   DB, err = gorm.Open("mysql",dsn)
   //测试连通性
   err = DB.DB().Ping()
   return
   //return DB.DB().Ping()
}

func main() {
   //创建数据库
   //sql: CREATE DATABASE bubble;
   //连接数据库
   err := initMySQL()
   if err != nil {
      //可以搞个日志
      panic(err)
   }
   //模型绑定
   DB.AutoMigrate(&Todo{})   //todos
   defer DB.Close()  //程序退出,关闭数据库
   //遇事不决写注释
   r := gin.Default()
   //告诉gin框架模板文件引用的静态文件去哪里找
   r.Static("/static","static")
   //告诉gin框架去哪里找模板文件
   r.LoadHTMLGlob("templates/*")
   r.GET("/", func(c *gin.Context) {
      c.HTML(http.StatusOK, "index.html", nil)
   })

   //v1 api
   v1Group := r.Group("v1")
   {
      //待办事项
      //添加
      v1Group.POST("/todo", func(c *gin.Context) {
         //前端页面填写待办事项,点击提交,会发请求到这里
         //1. 从请求中把数据拿出来
         var todo Todo
         c.BindJSON(&todo)
         //2. 存入数据库
         err := DB.Create(&todo).Error
         if err != nil {
            c.JSON(http.StatusOK,gin.H{"error": err.Error()})
         }else {
            c.JSON(http.StatusOK, todo)
            //c.JSON(http.StatusOK, gin.H{
            // "code": 200,
            // "msg" : "success",
            // "data": todo,
            //})
         }
         //3. 返回响应

      })
      //查看所有的代办事项
      v1Group.GET("/todo", func(c *gin.Context) {
         //查询todo这个表里的所有数据
         var todeList []Todo
         err := DB.Find(&todeList).Error
         if err != nil {
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
         }else {
            c.JSON(http.StatusOK, todeList)
         }
      })
      //查看某一个代办事项
      v1Group.GET("/todo/:id", func(c *gin.Context) {

      })
      //修改某一个待办事项
      v1Group.PUT("/todo/:id", func(c *gin.Context) {
         id, ok := c.Params.Get("id")
         if !ok {
            c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
            return
         }
         var todo Todo
         if err = DB.Where("id=?", id).First(&todo).Error; err!=nil{
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
            return
         }
         c.BindJSON(&todo)
         if err = DB.Save(&todo).Error; err!= nil{
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
         }else{
            c.JSON(http.StatusOK, todo)
         }
      })
      //删除
      v1Group.DELETE("/todo/:id", func(c *gin.Context) {
         id, ok := c.Params.Get("id")
         if !ok {
            c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
            return
         }
         if err = DB.Where("id=?", id).Delete(Todo{}).Error;err!=nil{
            c.JSON(http.StatusOK, gin.H{"error": err.Error()})
         }else{
            c.JSON(http.StatusOK, gin.H{id:"deleted"})
         }
      })
   }
   r.Run(":9090")
}

文章永久链接:https://tech.souyunku.com/?p=38574


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(99) 打赏



未经允许不得转载:搜云库技术团队 » Gin+Gorm小项目

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367