Golang
文章目录
- Golang
- 1.1 获取一条记录
- 1.1 test
- 2.获取多条记录
- 2.1 test
1.1 获取一条记录
根据用户的 id 从数据库中获取一条记录
user.go
import (
"fmt"
"go_code02/webapp/chapter02"
)
type User struct { ID int
Username string
Password string
Email string
}
func (user *User) GetUserByID() (*User, error) {
//写 sql 语句
sqlStr := "select id , username , password , email from users where id = ?"
//执行 sql
row := chapter02.Db.QueryRow(sqlStr, user.ID)
//声明三个变量
var id int
var username string
var password string
var email string
//将各个字段中的值读到以上三个变量中
err := row.Scan(&id, &username, &password, &email)
if err != nil {
return nil, err
}
//将三个变量的值赋给 User 结构体
u := &User{
ID: id,
Username: username,
Password: password,
Email: email,
}
return u, nil
}
1.1 test
user_test.go
package model01
import (
"fmt"
"testing"
)
func TestGetUserById(t *testing.T) {
fmt.Println("测试添加用户:")
user := &User{
ID: 1,
Username: "admin3",
Password: "123456",
Email: "admin3@atguigu.com",
}
//将 user 添加到数据库中
u, _ := user.GetUserByID()
fmt.Println("得到的信息为",u)
}
成功
2.获取多条记录
user.go
func (user *User) GetUsers() ([]*User, error) {
//写 sql 语句
sqlStr := "select id , username , password , email from users"
//执行 sql
rows, err := chapter02.Db.Query(sqlStr)
if err != nil {
return nil, err
}
//定义一个 User 切片
var users []*User
//遍历
for rows.Next() {
//声明四个个变量
var userID int
var username string
var password string
var email string
//将各个字段中的值读到以上三个变量中
err := rows.Scan(&userID, &username, &password, &email)
if err != nil {
return nil, err
}
//将三个变量的值赋给 User 结构体
u := &User{
ID: userID,
Username: username,
Password: password,
Email: email,
}
//将 u 添加到 users 切片中
users = append(users, u)
}
return users, nil
}
2.1 test
user_test.go
func TestGetUse(t *testing.T) {
fmt.Println("测试添加用户:")
user := &User{
}
//将 user 添加到数据库中
u, _ := user.GetUsers()
fmt.Println("得到的信息为",u)
for k, v := range u{
fmt.Println("第%v个用户是%v", k+1 ,v)
}
}
成功