ORM | 青训营笔记

138 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

Overview

  • Full-Featured ORM
  • Associations (Has One, Has Many, Belongs To, Many To Many, Polymorphism, Single-table inheritance)
  • Hooks (Before/After Create/Save/Update/Delete/Find)
  • Eager loading with , Preload``Joins
  • Transactions, Nested Transactions, Save Point, RollbackTo to Saved Point
  • Context, Prepared Statement Mode, DryRun Mode
  • Batch Insert, FindInBatches, Find/Create with Map, CRUD with SQL Expr and Context Valuer
  • SQL Builder, Upsert, Locking, Optimizer/Index/Comment Hints, Named Argument, SubQuery
  • Composite Primary Key, Indexes, Constraints
  • Auto Migrations
  • Logger
  • Extendable, flexible plugin API: Database Resolver (Multiple Databases, Read/Write Splitting) / Prometheus…
  • Every feature comes with tests
  • Developer Friendly

GORM GORM 是一个 Golang 的第三方库,由国人开源的轻量级关系型 ORM 库。

Github:github.com/jinzhu/gorm 中文文档:gorm.io/zh_CN/ Jinzhu 本人的 Topic:www.bilibili.com/video/BV1pE… V2.0:gorm.io/zh_CN/docs/… GORM 基于 Golang build-in 的 database/sql 库进行扩展,增加了对面向对象编程更加友好的 ORM 机制。开发者只需要定义好 Struct 数据结构,由 GORM 来完成 Struct 到 ModelStruct 的转换(结构体映射为 Table,结构体成员映射为 Column),并提供了标准的方法进行数据操作,例如:Create、Update、Delete、Where 等。

GORM 的特点:

支持 MySQL、PostgreSQL、SQLite、SQLServer 等数据库。 支持 One to One、One to Many、Many To Many、Polymorphism(多态)等多种关联处理类型。 支持钩子(Hook)机制,可以在执行 Create、Save、Update、Delete、Find 操作之前或之后进行回调,具有良好的可扩展性。 支持复合主键:多个属性构成一个主键,常用作索引。 支持自动迁移(Auto-Migrtion)。 支持原生 SQL 操作。 支持链式 API。 支持热加载。 支持事务性。 支持日志。

ORM(Object Relation Mapping),对象关系映射,实际上就是对数据库的操作进行封装,对上层开发人员屏蔽数据操作的细节,开发人员看到的就是一个个对象,大大简化了开发工作,提高了生产效率

gorm 用法介绍

库安装

**

go get -u github.com/jinzhu/gorm

数据库连接

**

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"var db *gorm.DB

func init() {
    var err error
    db, err = gorm.Open("mysql", "<user>:<password>/<database>?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
}

参考引用:www.jianshu.com/p/f7419395e…
gorm 官方文档: gorm.io/
51CTO博客作者云物互联:blog.51cto.com/u_15301988/…