这是我参与「第五届青训营 」伴学笔记创作活动的第10天
一、本堂课重点内容:
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。ORM框架是连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。 对于Go来说Go有开发出自己独有的框架GORM。
二、详细知识点介绍:
1.理解database/sql
1.1基本用法- Quick Start
import driver 实现
使用driver + DSN初始化DB连接
执行一条SQL,通过rows 取回返回的数据处理完毕,需要释放链接
1.2设计原理 应用程序 ——》database/sql——》数据库Driver 各个部分各司其职,应用层负责界面,database/sql负责接收界面发来的指令,调用方法操作数据库。
连接池优先使用原有连接,如果前置都出错了,就会强制新建连接
2.GORM基础使用
2.1背景知识
设计简洁、功能强大、自由扩展的全功能ORM ·设计原则: API精简、测试优先、最小惊讶、灵活扩展、无依赖可信赖
功能完善: 1.关联:一对一、一对多、单表自关联、多态;Preload、Joins预加载、级联删除;关联模式;自定义关联表 2.事务:事务代码块、嵌套事务、Save Point
3.多数据库、读写分离、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器 4.字段权限、软删除、批量数据处理、Prepared Stmt、自定义类型、命名策略、虚拟字段、自动 track时间、SQL Builder、Logge· 5.代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容... 6.多模式灵活自由扩展 7.Developer Friendly
2.2 模型定义
2.2.1 惯例约定——约定优于配置
表名为struct name的snake_cases复数格式字段名为field name的snake_case 单数格式ID /ld字段为主键,如果为数字,则为自增主键CreatedAt字段,创建时,保存当前时间 UpdatedAt字段,创建、更新时,保存当前时间gorm.DeletedAt字段,默认开启soft delete模式
2.3 关联操作 crud、预加载、级联删除