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