这是我参与「第五届青训营」伴学笔记创作活动的第 5 天
GORM
gorm是一款面向Go开发的,对开发人员友好的ORM库
ORM的定义
ORM指对象关系映射,是用在关系数据库和面向对象的编程语言堆之间转换数据的编程技术。通过ORM技术可将RDBMS中的某个数据表的结构关联到某个类或结构体上。通过修改类或结构体实例的方式完成数据库的增删改查任务。
GORM的安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
GORM的使用
默认情况下,GORM使用ID作为主键,使用结构体名的蛇形复数作为表名,字段名的蛇形作为列名,并使用CreatedAt,UpdateAt,Delete字段追踪创建,更新时间,软删除时间。 结构体如:
type Product struct {
Code string
Price uint
ID uint `gorm:"primarykey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt sql.NullTime `gorm:"index"`
}
First方法返回符合指定条件的首个记录值
Where子句查询:
db.Where("name=?","jinzhu").First(&user)
db.Where("name=?","jinzhu").Find(&user)
可通过结构体和Map传入条件:
db.Where(&User{Name:"jinzhu",Age:20}).First(&user)
使用结构体作为查询条件时,只会查询结构体内的非零值字段
GORM事务
数据库事务是访问并可能操作各种数据项]的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
GORM Hook
Hook 是在创建、查询、更新、删除等操作之前、之后调用的函数。
Kitex
Kitex是字节跳动内部的Go微服务RPC框架,具有高性能,可拓展性强的特点。
RPC
RPC(远程过程调用)是指计算机程序使得过程在不同地址空间(一般在共享网络的另一台计算机上)中执行。使用RPC可以像调用方法一样快捷的与远程服务进行交互
接口描述语言
IDL是一种语言的通用术语,它允许用一种语言编写的程序或对象与用未知语言编写的另一个程序进行通信。 IDL定义示例:
namespace go api
struct Request {
1: string message
}
struct Resposne {
1: string message
}
service Echo {
Reponse echo(1: Request req)
}