### 數據庫操作
在 Golang 中,數據庫操作是后端開發的重要組成部分。Go 通過標準庫 `database/sql` 和第三方驅動,支持與多種數據庫的交互。
#### 支持的數據庫
1. **MySQL**
- 常用的關系型數據庫,廣泛應用于各種應用程序。
- 推薦驅動:[go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
2. **PostgreSQL**
- 功能強大的開源關系型數據庫,適用于復雜查詢和高并發場景。
- 推薦驅動:[pgx](https://github.com/jackc/pgx)
3. **Elasticsearch**
- 用于存儲和搜索大量數據的分布式搜索引擎。
- 推薦庫:[elastic](https://github.com/olivere/elastic)
### ORM 數據庫操作
在 Golang 中,ORM(對象關系映射)庫可以簡化與數據庫的交互,使開發者能夠使用 Go 語言的結構體直接操作數據庫。常用的 ORM 庫包括 GORM 和 XORM。
#### 常用 ORM 庫
1. **GORM**
- GORM 是 Go 的一個強大的 ORM 庫,支持多種數據庫(如 MySQL、PostgreSQL、SQLite 等)。
- GitHub 地址:[GORM](https://github.com/go-gorm/gorm)
2. **XORM**
- XORM 是另一個簡單易用的 ORM 庫,具有良好的性能和靈活性。
- GitHub 地址:[XORM](https://github.com/go-xorm/xorm)
#### 基本操作示例
以下是使用 GORM 進行基本數據庫操作的示例:
```go
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"fmt"
)
// 定義模型
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:255"`
Age int
}
func main() {
// 連接數據庫
dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
// 自動遷移
db.AutoMigrate(&User{})
// 創建新用戶
newUser := User{Name: "Alice", Age: 30}
db.Create(&newUser)
// 查詢用戶
var user User
db.First(&user, 1) // 查詢 ID 為 1 的用戶
fmt.Printf("Name: %s, Age: %d\n", user.Name, user.Age)
// 更新用戶信息
db.Model(&user).Update("Age", 31)
// 刪除用戶
db.Delete(&user)
}
```
#### 注意事項
- **模型定義**:通過結構體定義數據庫模型,并使用標簽指定字段屬性。
- **連接配置**:確保正確設置連接字符串,使用適當的數據庫驅動。
- **錯誤處理**:每次數據庫操作后檢查錯誤,以確保操作成功。