MySql数据库交互

19【Gin+GORM】Gin GORM的配置及实现数据库表的增删改查 | 18 使用文档:https://gorm.io/zh_CN/docs/index.html

定义全局变量访问数据库

在modules下新建一个访问数据库的模块,定义数据库初始化信息

package modules
 
import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)
 
var DB *gorm.DB
var err error
 
func init() {
	dsn := "root:qwaszx123@tcp(127.0.0.1:3306)/study?charset=utf8mb4"
	DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
 
	if err != nil {
		fmt.Println("数据库连接失败:")
		fmt.Println(err)
	}
}
 

定于数据结构体

结构体名称、结构体属性均需要大写才能访问 结构体名称直接对应表名,但是默认是复数形式:结构体User 表users 结构体属性需要与数据库字段驼峰命名对照:结构体属性CreateAt 表create_at

type User struct {
	Id        int
	Username  string
	Password  string
	Email     string
	CreatedAt int
	UpdateAt  int
	DeleteAt  int
}
 
  • 自定义表名 定义结构体User的方法TableName可以自定义结构体对应的表名
func (User) TableName() string {
	return "User"
}

查询数据

先定义存放数据的切片,通过DB调用Find方法传入可修改的内存地址

func (con UserController) Index(context *gin.Context) {
	userList := []modules.User{}
	modules.DB.Find(&userList)
	context.JSON(200, gin.H{
		"result": userList,
	})
 
	context.String(http.StatusOK, "用户index")
}
条件查询

使用DB.Where()方法

modules.DB.Where("username='王五'").Find(&userList)
 
// 查询单个
user:=modules.User{Id:6}
modules.DB.Find(&user)

新增数据

使用DB.Create(&x)

user := modules.User{
		Username: "老六",
		Password: "123456",
	}
	modules.DB.Create(&user)

更新数据

使用DB.Save(&x)

// 查询单个
user := modules.User{Id:6}
modules.DB.Find(&user)
 
user.name = "新张三"
modules.DB.Save(&user)
更新指定列

使用DB.Model.Where.Update

user := modules.User{}
modules.DB.Model(&user).Where("id = ?",6).Update("username", "新张三")

删除数据

使用DB.Delete()

user := modules.User{Id: 6}
modules.DB.Delete(&user)

查询语句详解

20【Gin+GORM】Gin GORM 查询语句详解、GORM原生 SQL 和SQL生成器 | 39