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为结构体里子表的名

相关推荐
仍然.10 小时前
Redis---缓存
数据库·redis·缓存
Aloudata10 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@10 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog11 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模11 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡11 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影11 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔12 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
liulilittle12 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen12 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust