GORM入门 | 青训营笔记

96 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记

什么是ORM

Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库

它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。

ORM优缺点

优点

  • 提高开发效率

缺点

  • 牺牲执行性能
  • 牺牲灵活性
  • 弱化SQL能力

GORM

gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。

官方中文文档

gorm.io/zh_CN/docs/

安装

go get -u github.com/jinzhu/gorm

连接数据库

连接不同的数据库都需要导入对应数据的驱动程序,GORM 已经为我们包装一些驱动程序,只需要按如下方式导入需要的数据库驱动即可:

import _ "github.com/jinzhu/gorm/dialects/mysql"

mysql 简单连接

func main() {
    // 连接数据库
    db, err := gorm.Open("mysql", "root:123456@(127.0.0.1:3306)/go_sql?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
    panic(err)
    }
    defer db.Close()
}

mysql 驱动程序提供了高级配置可以在初始化过程中使用

func main() {
   //ORM框架是让数据库的表结构变成代码定义的数据结构(golang里的结构体的结构)从而做到,代码结构即为数据库结构,代码行为即为数据库行为。
   db, _ := gorm.Open(mysql.New(mysql.Config{
      DSN:               "root:123456@(127.0.0.1:3306)/go_sql?charset=utf8mb4&parseTime=True&loc=Local",
      DefaultStringSize: 171,
   }), &gorm.Config{
      SkipDefaultTransaction: false,
      //NamingStrategy: schema.NamingStrategy{
      // TablePrefix:   "maka_", // 表名前缀,`User` 的表将是 `t_users`
      // SingularTable: true,    //使用单数表名,“用户”表将是“用户”启用此选项
      // NoLowerCase:   true,    // 跳过名称的snake_casing
      //},
      DisableForeignKeyConstraintWhenMigrating: true, // 逻辑外键(代码里面自动外键外键关系)
   })
}