likes
comments
collection
share

新手第二章 Go引入GORM插件 实现简易的CURL(全程干货无废话)

作者站长头像
站长
· 阅读数 40

人生是不能回头的 每走一步都会有不同的结果 一切都是唯一的 包括遗憾

首先引入必要的资源包

所有的包在pkg.go.dev/ 都可以找到 选择合适的版本

go get -u gorm.io/driver/mysql@1.5.3

功能齐全的 ORM (虚拟对象数据库)
go get -u gorm.io/gorm

GORM针对 MySQL 驱动程序
go get -u gorm.io/driver/mysql

一个方便Go语言应用程序处理配置信息的库
go get -u github.com/spf13

轻量级的Go语言Web框 简称 Gin
go get -u go get -u github.com/gin-gonic/gin

初始化文件夹

新手第二章 Go引入GORM插件 实现简易的CURL(全程干货无废话)

gin框架官方文档 gin-gonic.com/zh-cn/docs/…

在 main.go文件中

package main

import "github.com/gin-gonic/gin"

func main() {
  //gin.Default()是gin框架自带的默认路由
	r := gin.Default()
        
  //r.GET 监听默认 8080 端口后访问 url地址/ping
  //c *gin.Context 参数包含了大量的关于请求和响应的信息
	r.GET("/ping", func(c *gin.Context) {
           //数据集转json
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // 监听并在 0.0.0.0:8080 上启动服务
        r.Run("8090") //通过这种方式指定端口
}

其中JSON的返回方式解释

// 一、返回JSON
 c.String(200,"成功") // 返回字符串

// 二、 方式一,直接返回map格式
var m = map[string]interface{}{
"name": "hcl",
"age": 20,
}
c.JSON(200, m)
// 方式二,借助gin.H, gin.H 是 map[string]interface{}的缩写
c.JSON(200, gin.H{"name": "hcl", "age": 20})

现在开始使用 GORM 编写未封装的 CURD

在models文件夹中新增UserBasic Model

package models

import (
   "fmt"
   "ginchat/utils"
   "gorm.io/gorm"
)

type UserBasic struct {
   gorm.Model
   Identity      string
   Name          string
   Password      string
   Phone         string
   Email         string
   ClientIp      string
   ClientPort    string
   Status        uint8
   LoginTime     uint64
   HeartbeatTime uint64
   LoginOutTime  uint64
   IsLoginOut    bool
   DeviceInfo    string
}

func (table *UserBasic) TableName() string {
   return "user_basic"
}

在 test 文件夹中新建test_gorm.go文件

package main

import (
   "fmt"
   "ginchat/models"
   "gorm.io/driver/mysql"
   "gorm.io/gorm"
)

func main() {
   //连接 mysql地址 远程或本地皆可
   db, err := gorm.Open(mysql.Open("user:pwd@tcp(ip:port)/databaseName?charset=utf8mb4&parseTime=True&Local"), &gorm.Config{})
   if err != nil {
      panic("failed to connect database")
   }

   // 初始化表结构
   db.AutoMigrate(&models.UserBasic{})
   // 初始化多张表
   //db.AutoMigrate(&User{}, &Product{}, &Order{})
   //对数据表设置
   //db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})
   user := &models.UserBasic{}
   user.Name = "张三"
   db.Create(user)
   // Read 根据主键查询一条数据
   fmt.Println(db.First(user, 1)) // 根据整型主键查找
   // Update - 修改刚新增的数据
   db.Model(user).Update("PassWord", "12342") // 仅更新非零值字段
   // Delete - 根据主键删除
   db.Delete(user, 3)
}

配置好相关参数后 运行test_gorm.go文件

也可以使用命令执行 go build ginchat/test_gorm.go

观察数据库数据动态 是否是在预期内

有问题解决问题 没问题就结束本章

解决不了 就在评论去留言 一起解决

转载自:https://juejin.cn/post/7388395268851597349
评论
请登录