GORM

GORM

1 GORM简单介绍

GORM是Golang的一个orm框架。简单说,ORM就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射" ( Object/Relational Mapping)的缩写。使用ORM框架可以让我们更方便的操作数据库。
GORM官方支持的数据库类型有:MySQL, PostgreSQL, sQlite, SQL Server

官方文档https://gorm.io/zh_CN/docs/index.html

2 连接到数据库(MySql)

import (
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
)

func main() {
  // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
  dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

3 将连接定义成全局的

/*
	项目中创建 db 文件夹 
*/

pFkVYvD.png

在client.go中写入

package db

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var DB *gorm.DB
var err error

func init() {
	dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
	DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		fmt.Println(err)
	}
}
/*
	将DB定义成公有的,并且将数据库连接写入init中,只要引入了就会创建连接对象
*/

4 定义操作数据表的结构体,文件名尽量和表名相同

// 在db下创建一个models文件夹用来管理表

pFkVy28.png

user表结构

pFkVRbj.png

user.go

/*
	结构体中需要有数据表中的所有字段
	字段第一个字母需要大写 方便外部使用
	add_time 在结构体中要写成 AddTime 用驼峰命名
	字段类型也需要对应
	
	默认操作的是结构体名称对应的复数的表 也就是说 如果结构体是User那么操作的表就是users,和数据库中的user不一样就会有问题,所以需要写一个TableName的方法,指定操作的表
*/

package models

type User struct { // 默认表名是 `users`
	Id       int
	Username string
	Age      int
	Email    string
	AddTime  int
}

// 指定操作的表
func (u User) TableName() string {
    return "user"
}

小结

1、结构体的名称必须首字母大写,并和数据库表名称对应。例如;表名称为user结构体名称定义成User,表名称为article_cate 结构体名称定义成ArticleCate

2、结构体中的字段名称首字母必须大写,并和数据库表中的字段一一对应。例如:下面结构体中的Id和数据库中的 id对应,Username和数据库中的username对应,Age和数据库中的 age对应,Email和数据库中的email对应,AddTime和数据库中的add_time字段对应

3、默认情况表名是结构体名称的复数形式。如果我们的结构体名称定义成 User,表示这个模型默认操作的是users表。

4、我们可以使用结构体中的自定义方法 TableName 改变结构体的默认表名称,如下:
func (User)TableName() string {
	return "user"
}
posted @ 2024-01-17 14:36  春游去动物园  阅读(3)  评论(0编辑  收藏  举报