Database/sql 及 GORM 相关解读 | 青训营

99 阅读1分钟

背景知识

  1. 数据库与 SQL 概念解读
  2. 用 database/sql 建立连接并使用
  3. DSN 相关解读
  4. GORM 解析

理解database/sql

基本用法-Quick Start

import driver实现使用driver+DSN初始化DB连接

执行一条SQL,通过rows取回返回的数据处理完毕,需要释放连接

数据、错误处理

处理错误

设计原理

连接池

连接池配置

连接池状态

操作过程伪实现

Driver连接接口

Driver连接接口2

GROM基础使用

背景知识

“设计简洁、功能强大、自由扩展的全功能ORM”

  • 设计原则:API精简、测试优先、最小惊讶、灵活扩展、无依赖、可信赖

  • 功能完善

    • 关联:一对一、一对多、单表自关联、多态;Preload。Joins预加载、级联删除;关联模式;自定义关联
    • 事务:事务代码块、嵌套事务、Save Point
    • 多数据库、读写分离、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器
    • 字段权限、软删除、批量数据处理、Prepared Stmt、自定义类型、命名策略、虚拟字段、自动track时间、SQL Builder、Logger
    • 代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·靠数据库兼容……
    • 多模式灵活自由可扩展
    • Developer Friendly

基本用法

CRUD

模型定义

惯例约定

约定优于配置

  • 表名为struct name的snake_cases的复数格式
  • 字段名为field name的snake_cases的单数形式
  • ID/id字段为主键,如果为数字,则为自增主键
  • CreatedAt字段,创建时,保存当前时间
  • UpdatedAt字段,创建、更新时,保存当前时间
  • gorm.DeletedAt字段,默认开启soft delete模式

一切皆可配置

关联介绍

CRUD

Preload / Joins预加载

级联删除