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

相关推荐
SelectDB2 小时前
为什么 JSON 正在成为分析数据库新的竞争点?
数据库·json·agent
ClouGence3 小时前
开源数据库管理工具 CloudDM 4.2.0 发布,新增 GoldenDB、KingbaseES 等数据源
数据库·dba·devops
发霉的馒头4 小时前
ORA-00845: MEMORY_TARGET not supported on this system的解决方法
数据库
草莓熊Lotso6 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
煎饼皮皮侠7 小时前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_13 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
九皇叔叔14 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
橙子家15 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_9620664916 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext17 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh