介绍
- GORM: GORM(Go Object-Relational Mapping)是一个流行的Go语言ORM(对象关系映射)库。ORM是一种编程模式,用于在应用程序代码和数据库之间建立对象和关系之间的映射,使得开发人员可以通过操作对象来操作数据库,而不必直接编写SQL查询语句。GORM提供了许多便捷的方法来处理数据库操作,例如创建、读取、更新和删除记录。它支持多种数据库,如MySQL、PostgreSQL、SQLite等,而且可以用于各种应用程序,从简单的Web应用到大型服务。
- Kitex: Kitex是一个用于构建高性能RPC(远程过程调用)和微服务的Go语言框架。它专注于提供高度可定制的服务,旨在支持大规模、高性能和低延迟的微服务体系结构。Kitex具有低开销的序列化和反序列化机制,同时提供了高效的连接池管理和资源复用,以减少不必要的开销。它还支持多种传输协议和中间件,可以轻松地集成到现有的系统中。Kitex的目标是帮助开发人员构建高性能和可扩展的微服务应用程序。
- Hertz:HERTZ是一款采用Go语言开发的高性能Web框架,接口简单,非常易于学习和使用,可以显著提升Web应用的开发效率。HERTZ内置了便捷的路由机制,开发者可以快速定义请求路由及处理函数。同时,HERTZ还提供了灵活的中间件支持,使得开发者可以方便地实现日志、验证、Tracing等功能。借助HERTZ的高性能运行时,开发者可以轻松构建支持高并发、低延迟的Web服务。HERTZ还支持热重载、跨平台等特性,在保障性能的同时提升开发体验。因此,HERTZ是使用Go语言进行Web应用开发的优秀选择。
三件套的使用
GORM使用
GORM(Go Object-Relational Mapping)是一个在Go语言中操作数据库的ORM库,它可以让你通过Go语言的结构体来进行数据库的增删改查操作,而不必直接编写SQL语句。以下是一个简单的示例,展示了如何使用GORM进行基本的数据库操作。
安装 GORM: 首先,你需要安装 GORM。在命令行中执行以下命令:
go get -u gorm.io/gorm
连接数据库: 在开始使用GORM之前,你需要连接到数据库。以下示例演示了如何连接到SQLite数据库:
package main
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
// 连接到SQLite数据库
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("Failed to connect to database")
}
// 在实际应用中,你应该在适当的时机关闭数据库连接
// defer db.Close()
}
定义模型: 接下来,你需要定义与数据库表对应的Go结构体,这些结构体被称为“模型”。
package main
import (
"gorm.io/gorm"
)
type User struct {
gorm.Model
Name string
Email string
}
在上面的示例中,User结构体继承了gorm.Model,这将自动为模型添加ID、CreatedAt、UpdatedAt和DeletedAt字段。
创建记录: 使用GORM,你可以轻松地创建新的记录。
func main() {
// ... 连接数据库代码 ...
// 创建记录
user := User{Name: "John Doe", Email: "john@example.com"}
result := db.Create(&user)
if result.Error != nil {
panic("Failed to create user")
}
}
查询记录: 你可以使用GORM执行各种查询操作。
func main() {
// ... 连接数据库代码 ...
// 查询单个记录
var user User
result := db.First(&user, 1) // 查询ID为1的用户
if result.Error != nil {
panic("User not found")
}
// 查询多个记录
var users []User
result = db.Find(&users)
if result.Error != nil {
panic("Failed to fetch users")
}
}
更新记录: 你可以使用GORM更新现有记录。
func main() {
// ... 连接数据库代码 ...
// 更新记录
var user User
result := db.First(&user, 1)
if result.Error != nil {
panic("User not found")
}
user.Email = "newemail@example.com"
db.Save(&user)
}
删除记录: 使用GORM,你可以删除记录。
func main() {
// ... 连接数据库代码 ...
// 删除记录
var user User
result := db.First(&user, 1)
if result.Error != nil {
panic("User not found")
}
db.Delete(&user)
}
这只是GORM的一些基本用法示例。GORM还提供了许多其他功能,如条件查询、关联查询、事务支持等。你可以查阅GORM的官方文档以获取更详细的信息和示例:gorm.io/docs/
KITEX使用
Kitex 目前对 Windows 的支持不完善。如果本地开发环境是 Windows 的同学建议使用虚拟机或 WSL2。
定义IDL接口:
type HelloReq {
Name string
}
type HelloResp {
Message string
}
service Hello {
@handler NewHello
getHello(HelloReq) returns(HelloResp)
}
实现服务端:
// 实现NewHello handler
func NewHello(ctx context.Context, req *HelloReq) (resp *HelloResp, err error) {
// 业务实现
return
}
// 注册服务
svr := hello.MustNewServer(new(HelloImpl))
// 启动服务
err := svr.Run()
客户端调用:
// 构建客户端
c, err := hello.NewClient("localhost:8888", client.WithMessageLogger())
// 调用远程服务
req := &HelloReq{Name: "kitex"}
resp, err := c.GetHello(ctx, req)
HERTZ使用
导入hertz包:
import "github.com/cloudwego/hertz/pkg/app"
创建服务:
h := hertz.New()
定义路由:
h.GET("/hello", func(c context.Context, ctx *app.RequestContext) {
// 请求处理逻辑
})
添加中间件:
h.Use(LoggingMiddleware)
启动服务:
h.Spin()
客户端请求:
curl http://localhost:8080/hello
hertz通过封装net/http库,提供了路由、中间件、请求上下文等功能,可以快速构建Go web服务。
以上就是通过上课与看课件加上结合一些网上信息总结出来的笔记~