gorm
gin
restful风格:指的是网络应用中就是资源定位和资源操作风格,不是标准也不是协议
form参数接收类型:form-data ,x-www-urlencoded,application/x-www-form-urlencoded
请求方式对比:PUT 和 PATCH
PUT:在服务器更新资源(客户端提供完整资源数据)
PATCH:在服务器更新资源(客户端提供需要修改的资源数据)
请求头:
sqlx 是Go语言中一个流行的数据库操作库,它构建在Go标准库 database/sql 之上,为数据库交互提供了更便捷、高效和功能丰富的方式。以下是对 sqlx 库的详细介绍:
sqlx
1. 简化 SQL 查询
- 命名参数查询 :
sqlx支持使用命名参数进行 SQL 查询,这使得 SQL 语句更易读和维护。相比标准库中使用?占位符,命名参数更加直观。例如:
go
var id int
err := db.Get(&id, "SELECT id FROM users WHERE name = :name", sql.Named("name", "John"))
- 结构体映射 :
sqlx可以方便地将查询结果直接映射到结构体。假设你有一个User结构体:
go
type User struct {
ID int `db:"id"`
Name string `db:"name"`
}
var user User
err := db.Get(&user, "SELECT id, name FROM users WHERE id =?", 1)
这里 sqlx 根据结构体字段上的 db 标签将查询结果映射到 User 结构体实例。
2. 批量操作
- 批量插入 :
sqlx提供了方便的批量插入方法。例如,你有一个用户切片,想一次性插入到数据库:
go
users := []User{
{Name: "Alice"},
{Name: "Bob"},
}
_, err := db.NamedExec("INSERT INTO users (name) VALUES (:name)", users)
这种方式减少了多次数据库往返,提高了插入效率。
3. 连接池管理
sqlx 基于 database/sql 的连接池机制,无需额外配置即可使用连接池。这意味着在高并发场景下,sqlx 可以有效地管理数据库连接,复用连接资源,提升应用性能。例如,在创建数据库连接时:
go
db, err := sqlx.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database_name")
if err!= nil {
log.Fatal(err)
}
defer db.Close()
4. 灵活性与兼容性
- 支持多种数据库 :
sqlx支持多种关系型数据库,如 MySQL、PostgreSQL、SQLite 等。无论是哪种数据库,使用sqlx的基本模式相似,使得在不同数据库间切换时成本较低。 - 与标准库兼容 :由于
sqlx构建在database/sql之上,它与标准库的接口保持兼容。这意味着你可以在使用sqlx的同时,仍然使用标准库的一些特性,并且可以很容易地将现有的基于database/sql的代码迁移到sqlx。