golang mysql 封装next
在Golang中使用MySQL数据库时,可以使用第三方库来封装和简化数据库操作。下面是一个简单的示例代码,演示如何使用go-sql-driver/mysql库进行封装:
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
ID int
Name string
Age int
}
type UserRepository struct {
db *sql.DB
}
func NewUserRepository() *UserRepository {
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/database_name")
if err != nil {
log.Fatal(err)
}
return &UserRepository{
db: db,
}
}
func (r *UserRepository) GetAllUsers() ([]User, error) {
rows, err := r.db.Query("SELECT * FROM users")
if err != nil {
return nil, err
}
defer rows.Close()
users := []User{}
for rows.Next() {
var user User
err := rows.Scan(&user.ID, &user.Name, &user.Age)
if err != nil {
return nil, err
}
users = append(users, user)
}
if err := rows.Err(); err != nil {
return nil, err
}
return users, nil
}
func main() {
repo := NewUserRepository()
users, err := repo.GetAllUsers()
if err != nil {
log.Fatal(err)
}
for _, user := range users {
fmt.Println(user)
}
}
在上面的示例中,我们定义了一个User结构体来表示数据库中的用户表的行。然后,我们创建了一个UserRepository结构体,其中包含一个*sql.DB类型的字段来表示数据库连接。NewUserRepository函数用于创建一个新的UserRepository实例,并通过sql.Open函数连接到MySQL数据库。
GetAllUsers方法用于查询所有用户,并将查询结果封装为User对象的切片。我们使用r.db.Query函数执行查询,并通过rows.Scan方法将查询结果映射到User对象的字段上。最后,我们将所有的用户添加到一个切片中,并返回该切片。
在main函数中,我们创建了一个UserRepository实例,并调用GetAllUsers方法获取所有用户。如果出现错误,我们使用log.Fatal函数打印错误并退出程序。最后,我们遍历所有用户并打印它们的信息。
请注意,上述示例中的数据库连接字符串需要根据实际情况进行修改,包括用户名、密码和数据库名称。
以上就是使用go-sql-driver/mysql库封装MySQL数据库操作的一个简单示例。你可以根据实际需求来扩展和修改代码
原文地址: https://www.cveoy.top/t/topic/iUtm 著作权归作者所有。请勿转载和采集!