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

相关推荐
Rain的Java大神之路3 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
十二同学啊3 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技4 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰7985 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky5 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐6 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB7 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶7 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax7 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB7 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析