GORM是什么?
GORM 是 Go 语言中的一个强大的对象关系映射(ORM)库,它提供了一种简单且优雅的方式来进行数据库操作。ORM 是一种编程技术,它将数据库表与程序中的对象进行映射,使得开发者可以使用面向对象的方式进行数据库的增删改查操作,而无需直接编写 SQL 语句。
GORM 提供了许多功能和特性,包括:
- 模型定义:GORM 允许开发者通过定义结构体来表示数据库表,并可以通过在结构体中进行标记(tagging)来指定字段名称、数据类型、约束条件等。
- 数据库迁移:GORM 支持自动化数据库迁移,即根据模型定义自动生成数据库表,以及根据模型的更改自动更新数据库表结构。
- CRUD 操作:GORM 提供了简单易用的 API,可以进行常见的数据库操作,如创建(Create)、读取(Retrieve/Query)、更新(Update)、删除(Delete)等。
- 查询构建器:GORM 提供了强大的查询构建器,可以通过链式调用的方式构建复杂的查询语句,并支持条件筛选、排序、分页等功能。
- 关联关系:GORM 支持定义和处理数据库表之间的关联关系,如一对一、一对多、多对多等关系,在查询时可以方便地进行关联数据的加载。
- 事务支持:GORM 提供了事务管理的功能,可以确保一组数据库操作要么全部成功要么全部失败,从而保持数据的一致性。
如何进行GORM相关包导入?
go get gorm.io/gorm
go get gorm.io/driver/mysql
使用这两行命令进行GORM操作MySQL数据库导入。
测试GORM连通性
首先我们要确定以下四个变量,数据库用户名和用户密码、连接那个数据库还有数据库地址端口。可以启动windows shell窗口输入mysql -u root -p输入自己设置的密码进行密码验证。这里使用var变量,
var (
db_Address = "127.0.0.1/3306"
db_username = "root"
db_password = "123456"
db_name = "dousheng"
)
func testConnect() {
db_info := strings.Join([]string{db_username, ":", db_password, "@tcp(", db_Address, ")/", db_name}, "")
db, err := gorm.Open(mysql.Open(db_info), &gorm.Config{})
if err != nil {
fmt.Println("disconnected", err)
return
}
sql, err := db.DB()
defer sql.Close()
//后续数据库操作……
}
上述代码进行了测试连接本机MySQL的能力,请根据自己需求进行var变量的修改。
进行数据增删改查(简易版本)
type Student struct {
gorm.Model
No int8 `json:"id" gorm:"primaryKey""`
Password string `json:"password"`
}
func (Student) TableName() string {
return "student"
}
func createTable() {
err := db.AutoMigrate(&Student{}) //自动创建表
if err != nil {
fmt.Printf("失败", err)
}
}
func addData(student Student) {
db.Create(&student)
}
func findData() {
var student []Student
db.Find(&student)
for i := 0; i < len(student); i++ {
fmt.Println(student[i])
}
}
func updateData() {
var student Student
db.First(&student)
student.No = 100
db.Save(&student)
}
func deleteData() {
var student Student
db.First(&student)
db.Delete(&student)
}
声明student,使用AutoMigrate()方法自动创建数据库。使用create方法增加数据,使用find方法查找数据,使用first找第一个数据,save进行保存进入数据库,delte删除特定数据。