Golang 与 MySQL 交互指南
在 Go 语言中与 MySQL 数据库交互是后端开发的常见需求。以下是使用 Go 操作 MySQL 的全面指南:
1. 安装驱动
首先需要安装 MySQL 驱动:
go get -u github.com/go-sql-driver/mysql
2. 基本连接
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接字符串格式: "用户名:密码@tcp(地址:端口)/数据库名?参数"
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/testdb?charset=utf8mb4&parseTime=True")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 验证连接
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to MySQL!")
}
3. CRUD 操作
查询数据
type User struct {
ID int
Name string
Email string
}
func queryUsers(db *sql.DB) ([]User, error) {
var users []User
rows, err := db.Query("SELECT id, name, email FROM users")
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var u User
err := rows.Scan(&u.ID, &u.Name, &u.Email)
if err != nil {
return nil, err
}
users = append(users, u)
}
return users, nil
}
插入数据
func insertUser(db *sql.DB, user User) (int64, error) {
result, err := db.Exec(
"INSERT INTO users (name, email) VALUES (?, ?)",
user.Name,
user.Email,
)
if err != nil {
return 0 ,err
}
id ,err := result.LastInsertId()
return id ,err
}
ORM框架推荐(GORM)
对于更复杂的应用,可以使用 GORM:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
示例代码:
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Product struct {
gorm.Model
Name string
Price uint
}
func main() {
dsn := "user:pass@tcp(127 .0 .0 .1 :3306 )/dbname ?charset=utf8mb4&parseTime=True&loc=Local"
db,_:= gorm.Open(mysql.Open(dsn ),&gorm.Config{})
//自动迁移模式(创建表)
db.AutoMigrate(&Product{})
//创建记录
p:= Product{Name:"iPhone",Price :999 }
db.Create(&p )
//查询记录
var product Product
db.First(&product,"id=?",1 )
//更新记录
db.Model(&product ).Update("Price",899 )
//删除记录(软删除)
db.Delete(&product )
}
希望这些信息对您有所帮助!如需更详细的内容,可以参考零声教育的相关课程。
内容由零声教学AI助手提供,问题来源于学员提问