gin中使用GORM操作mysql数据库

Go 复制代码
package models

import (
	"fmt"

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

var DB *gorm.DB
var err error

func init() {
	dsn := "root:root@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)
	}
}
Go 复制代码
package models

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

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

crud:

Go 复制代码
func (con UserController) Index(c *gin.Context) {
	//增加
	user := models.User{
		Username: "qq",
		Age:      20,
	}
	models.DB.Create(&user)
	//查询
	userList := []models.User{}
	models.DB.Where("age>18").Find(&userList)
	c.JSON(http.StatusOK, gin.H{
		"result": userList,
	})
	//修改
	userFind := models.User{Id: 1}
	models.DB.Find(&userFind)
	userFind.Username = "哈哈"
	models.DB.Save(&userFind)
	//另一种修改
	user1 := models.User{}
	models.DB.Model(&user1).Where("id =?", 2).Update("username", "update")
	//删除
	userDelete := models.User{Id: 5}
	models.DB.Delete(&userDelete)
	userDelete1 := models.User{}
	models.DB.Where("username=?", "qq").Delete(&userDelete1)
}

crud以及使用原生sql查询

Go 复制代码
		navList := []models.Nav{}
		models.DB.Find(&navList)
		c.JSON(200, gin.H{
			"result": navList,
		})
	navList := []models.Nav{}
	models.DB.Where("id>3").Find(&navList)
	c.JSON(200, gin.H{
		"result": navList,
	})
	var a = 3
	var b = 9
	navList := []models.Nav{}
	models.DB.Where("id>? and id<?", a, b).Find(&navList)
	c.JSON(200, gin.H{
		"result": navList,
	})
		navList := []models.Nav{}
		models.DB.Where("id in(?)", []int{1, 5, 6}).Find(&navList)
		c.JSON(200, gin.H{
			"result": navList,
		})
	navList := []models.Nav{}
	models.DB.Where("title like ?", "%会%").Find(&navList)
	c.JSON(200, gin.H{
		"result": navList,
	})
	navList := []models.Nav{}
	models.DB.Where("id between ? and ?", 3, 10).Find(&navList)
	c.JSON(200, gin.H{
		"result": navList,
	})
	navList := []models.Nav{}
	models.DB.Where("id=?", 2).Or("id=?", 3).Find(&navList)
	c.JSON(200, gin.H{
		"result": navList,
	})
		navList := []models.Nav{}
		models.DB.Select("id,title").Find(&navList)
		c.JSON(200, gin.H{
			"result": navList,
		})
	navList := []models.Nav{}
	models.DB.Order("id desc").Order("sort asc").Offset(2).Limit(2).Find(&navList)
	c.JSON(200, gin.H{
		"result": navList,
	})
	navList := []models.Nav{}
	var num int64
	models.DB.Find(&navList).Count(&num)
	c.JSON(200, gin.H{
		"result": num,
	})
	navList := []models.Nav{}
	var num int
	models.DB.Exec("delete from nav where id=?", 2)
	models.DB.Exec("update nav set status=? where id=?", 0, 3)
	models.DB.Raw("select * from nav").Scan(&navList)
	models.DB.Raw("select count(*) from nav").Scan(&num)
	c.JSON(200, gin.H{
		"result": navList,
		"re":     num,
	})

xxxx为结构体里子表的名

相关推荐
-SGlow-3 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
明月5663 小时前
Oracle 误删数据恢复
数据库·oracle
水瓶_bxt5 小时前
Centos安装HAProxy搭建Mysql高可用集群负载均衡
mysql·centos·负载均衡
♡喜欢做梦5 小时前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
遇见你的雩风5 小时前
MySQL的认识与基本操作
数据库·mysql
dblens 数据库管理和开发工具5 小时前
MySQL新增字段DDL:锁表全解析、避坑指南与实战案例
数据库·mysql·dblens·dblens mysql·数据库连接管理
weixin_419658315 小时前
MySQL的基础操作
数据库·mysql
不辉放弃6 小时前
ZooKeeper 是什么?
数据库·大数据开发
Goona_7 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
Olrookie7 小时前
若依前后端分离版学习笔记(三)——表结构介绍
笔记·后端·mysql