[golang gin框架] 6.Gin GORM简介以及安装

  1. 介绍

GORM 是 Golang 的一个 orm 框架,简单说,ORM 就是通过实例对象的语法,完成关系型
数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写,使用 ORM
框架可以让我们更方便的操作数据库
GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server
Gorm 特性
• 全功能 ORM
• 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
• Create,Save,Update,Delete,Find 中钩子方法
• 支持 Preload、Joins 的预加载
• 事务,嵌套事务,Save Point,Rollback To Saved Point
• Context、预编译模式、DryRun 模式
• 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进
行 CRUD
• SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
• 复合主键,索引,约束
• Auto Migration
• 自定义 Logger
• 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
• 每个特性都经过了测试的重重考验
• 开发者友好
官方文档https://gorm.io/zh_CN/docs/index.html

2.Gin 中使用 GORM

(1).安装

下载gorm以及对应的mysql驱动

方式一:直接go get

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

方式二: go mod 管理

如果使用 go mod 管理项目的话,在对应go文件中import , 然后 go mod tidy
//go文件import
import (
    "gorm.io/gorm"
    "gorm.io/driver/mysql"
)
//main.go文件目录下执行命令
go mod tidy

(2).Gin 中使用 Gorm 连接数据库

在 models 下面新建 core.go ,建立数据库链接
gorm文档: https://gorm.io/zh_CN/docs/index.html
package models

//连接数据库核心代码

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

//全局使用DB,就需要把DB定义成公有的
var DB *gorm.DB
var err error

//自动初始化数据库
func init()  {
    // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
    dsn := "root:123456@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)
    }
}

(3).定义操作数据库的模型

Gorm 官方提供了详细的: https://gorm.io/zh_CN/docs/models.html
虽然在 gorm 中可以指定字段的类型以及自动生成数据表,但是在实际的项目开发中,一般是先设计数据库表,然后去实现编码

在实际项目中定义数据库模型注意以下几点

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"
}
表示把 User 结构体默认操作的表改为 user 表

user 模型:

package models

type User struct { // 结构体首字母大写, 和数据库表名对应, 默认访问数据表users, 可以设置访问数据表的方法
   Id  int
   Username string
   Age int
   Email string
   AddTime int // 大驼峰命名
}

//配置数据库操作的表名称
func (User) TableName() string {
    return "user"
}

更多约定参考官方文档:https://gorm.io/zh_CN/docs/conventions.html

[上一节][golang gin框架] 5.Cookie以及Session

[下一节][golang gin框架] 7.Gin GORM增删改查以及查询语句详解

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值