这是我参与「第五届青训营」伴学笔记创作活动的第5天
今天的内容略显晦涩,因此本笔记主要基于上网自学的内容。
1.三件套介绍
1.Gorm
Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
2.Kitex
Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
3.Hertz
Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点。
2.三件套使用
1.Gorm的基础使用
1.何为ORM框架:
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。ORM框架是连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。
讲一点通俗易懂的话,从我的角度理解,也就是ORM是用来在你的程序代码中操作访问数据库的一种封装好的手段。
2.一些具体的操作
1.定义表项结构体
// 定义一个数据模型(user表)
// 列名是字段名的蛇形小写(PassWd->pass_word)
type User struct {
Id uint `gorm:"AUTO_INCREMENT"`
Name string `gorm:"size:50"`
Age int `gorm:"size:3"`
Birthday *time.Time
Email string `gorm:"type:varchar(50);unique_index"`
PassWord string `gorm:"type:varchar(25)"`
}
2.连接数据库
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
3.增删改查
插入
db.Select("Name", "Age", "CreatedAt").Create(&user)
// INSERT INTO `users` (`name`,`age`,`created_at`) VALUES ("jinzhu", 18, "2020-07-04 11:05:21.775")
更新
db.First(&user)
user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)
// UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_at = '2013-11-17 21:34:10' WHERE id=111;
删除
// Email 的 ID 是 `10`
db.Delete(&email)
// DELETE from emails where id = 10;
// 带额外条件的删除
db.Where("name = ?", "jinzhu").Delete(&email)
// DELETE from emails where id = 10 AND name = "jinzhu";
以上内容都是一个形式,具体的使用时,还是要多多参考文档。
3.参考博客
(57条消息) ORM框架介绍——什么是ORM框架?_Mr.VK的博客-CSDN博客_orm框架
Golang下的ORM框架gorm的介绍和使用 - 知乎 (zhihu.com)
GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.