使用 GORM连接数据库并实现增删改查 | 青训营

2023年 8月 26日 79.4k 0

在数据库中创建表

创建这样一个学生表,包括学生的学号、姓名、性别、年龄

image.png

连接数据库

定义gorm model

指定了主键为Sno

type Student struct {
	Sno   string `gorm:"primaryKey"`
	Sname string
	Ssex  string
	Sage  uint
}

更改默认表名

func (s Student) TableName() string {
	return "student"
}

通过DSN连接数据库

db, err := gorm.Open(mysql.Open("root:123456@tcp(192.168.31.150:3306)/test?&parseTime=True&loc=Local"), &gorm.Config{}) //链接数据库
	if err != nil {
		panic("failed to connect datebase")
	}

因为我本地的环境是win11+linux子系统,mysql数据库在win11系统里,而程序在linux下运行,所以需要指定Windows系统的地址
执行后报错连接超时:

image.png
查找原因后发现是由于防火墙引起的,于是我便单独设置了入站规则,可以成功运行,然而过了几天后再运行又报了相同的错误,查找防火墙中的规则发现我自定义的规则被自动删除了。。。
索性直接关了防火墙了

增加数据

通过Create来创建一条数据

db.Create(&Student{"00001", "张三", "男", 20})
db.Create(&Student{"00002", "李四", "男", 21})
db.Create(&Student{"00003", "王二", "女", 20})
db.Create(&Student{"00004", "赵五", "女", 21})

image.png

查找数据

通过First查找第一个数据

var student Student
db.First(&student, "Ssex=?", "男")
fmt.Println(student)

image.png

通过Find查询多条结果

var results []map[string]interface{}
db.Model(&Student{}).Find(&results, "Ssex=?", "男")
fmt.Println(results)

image.png

更新数据

通过Update更新单个值

db.Model(&Student{}).Where("Sno=?", "00001").Update("Sage", 21)

通过Updates更新多个值

db.Model(&Student{}).Where("Ssex=?", "男").Updates(map[string]interface{}{"Sage": 18})

删除数据

通过Delete删除数据

db.Delete(&Student{}, "00001")

image.png

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论