以下是一个简单的例子,演示了在GoFrame中进行ORM接口开发的基本步骤:
package main
import (
"fmt"
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/frame/g"
)
// User 模型定义
type User struct {
Id int `orm:"id,primary" json:"id"`
Name string `orm:"name" json:"name"`
Age int `orm:"age" json:"age"`
}
// UserService 定义User模型的操作接口
type UserService interface {
// 添加用户
AddUser(user *User) (int, error)
// 根据ID获取用户
GetUserById(id int) (*User, error)
// 更新用户信息
UpdateUser(user *User) error
// 删除用户
DeleteUser(id int) error
}
// UserServiceImpl 实现UserService接口
type UserServiceImpl struct{}
// AddUser 添加用户
func (s *UserServiceImpl) AddUser(user *User) (int, error) {
result, err := g.DB().Table("user").Data(user).Insert()
if err != nil {
return 0, err
}
lastInsertId, err := result.LastInsertId()
return int(lastInsertId), err
}
// GetUserById 根据ID获取用户
func (s *UserServiceImpl) GetUserById(id int) (*User, error) {
user := new(User)
err := g.DB().Table("user").Where("id", id).Struct(user)
return user, err
}
// UpdateUser 更新用户信息
func (s *UserServiceImpl) UpdateUser(user *User) error {
_, err := g.DB().Table("user").Where("id", user.Id).Data(user).Update()
return err
}
// DeleteUser 删除用户
func (s *UserServiceImpl) DeleteUser(id int) error {
_, err := g.DB().Table("user").Where("id", id).Delete()
return err
}
func main() {
// 初始化数据库配置
g.Cfg().SetPath("config")
g.DB().SetConfig(gdb.Config{
LinkInfo: "root:password@tcp(127.0.0.1:3306)/test",
Type: "mysql",
})
// 初始化UserService
userService := new(UserServiceImpl)
// 添加用户
newUserId, err := userService.AddUser(&User{
Name: "Alice",
Age: 25,
})
if err != nil {
fmt.Println("AddUser error:", err)
} else {
fmt.Println("New user ID:", newUserId)
}
// 获取用户信息
user, err := userService.GetUserById(newUserId)
if err != nil {
fmt.Println("GetUserById error:", err)
} else {
fmt.Printf("User: %+v\n", user)
}
// 更新用户信息
user.Age = 26
err = userService.UpdateUser(user)
if err != nil {
fmt.Println("UpdateUser error:", err)
}
// 删除用户
err = userService.DeleteUser(newUserId)
if err != nil {
fmt.Println("DeleteUser error:", err)
}
}
在这个例子中,我们定义了User模型和UserService接口,然后实现了UserServiceImpl结构体,该结构体实现了UserService接口的各个方法。接着,我们在main函数中初始化了数据库配置,创建了UserServiceImpl的实例,并通过该实例调用了各个方法进行数据库操作。
这只是一个简单的示例,实际中,你可能需要更多的方法和功能,具体根据项目的需求进行设计和实现。在实际项目中,可以进一步考虑事务处理、错误处理、分页查询等更复杂的操作。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7669/GoFrame