连接到数据库

  1. 在models下新建core.go,建立数据库链接
package models

import (
    "fmt"

    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

var DB *gorm.DB
var err error

func init() {
    dsn := "root:12185744@tcp(127.0.0.1:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local"
    DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})

    if err != nil {
        fmt.Println(err)
    }
}

实际项目中定义数据库模型需注意:

  1. 结构体的名称必须首字母大写
  2. 结构体的字段名称首字母必须大写
  3. 默认情况表名是结构体名称的复数形式
  4. 可以使用结构体中的自定义方法 TableName 改变结构体的默认表名称
func (User) TableName() string {
return "user"
}

定义user模型:

package models

type User struct {
    Id       int
    Username string
    Age      int
    Email    string
    AddTime  int
}

func (User) TableName() string {
    return "user"
}

进行CRUD的操作

package admin

import (
    "fmt"
    "gindemo13/models"

    "net/http"
    "os"
    "path"
    "strconv"

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

type UserController struct {
    BaseController
}

func (con UserController) Index(c *gin.Context) {
    //查询数据库
    userList := []models.User{}

    models.DB.Find(&userList)

    c.JSON(http.StatusOK, gin.H{
        "result": userList,
    })

}
func (con UserController) Add(c *gin.Context) {
    user := models.User{
        Id:       1,
        Username: "cool2",
        Age:      22,
        Email:    "[email protected]",
        AddTime:  int(models.GetUnix()),
    }
    models.DB.Create(&user)
    c.String(200, "添加数据成功")
}

func (con UserController) Edit(c *gin.Context) {
    // //查询id等于6的数据
    // user := models.User{Id: 6}
    // models.DB.Find(&user)
    // //更新数据
    // user.Username = "嘻嘻"
    // user.Email = "[email protected]"
    // user.AddTime = int(models.GetUnix())
    // models.DB.Save(&user)

    user := models.User{}
    models.DB.Model(&user).Where("id = ?", 6).Update("username", "hhahhah")
    c.String(200, "修改成功")

}

func (con UserController) Delete(c *gin.Context) {
    user := models.User{}
    models.DB.Where("username = ?", "32").Delete(&user)

    c.String(200, "删除用户")
}