gorm中服务层怎么引用接口层
时间: 2024-05-13 13:20:41 浏览: 95
在gorm中,服务层可以通过依赖注入的方式引用接口层。具体步骤如下:
1. 在服务层中定义接口层的依赖
```go
type UserService struct {
UserRepository repository.UserRepository
}
```
2. 在接口层中定义接口
```go
type UserRepository interface {
FindById(id int64) (*model.User, error)
}
```
3. 实现接口
```go
type UserRepositoryImpl struct {
DB *gorm.DB
}
func (u *UserRepositoryImpl) FindById(id int64) (*model.User, error) {
var user model.User
if err := u.DB.First(&user, id).Error; err != nil {
return nil, err
}
return &user, nil
}
```
4. 在服务层中初始化接口实现
```go
func NewUserService(db *gorm.DB) *UserService {
return &UserService{
UserRepository: &UserRepositoryImpl{DB: db},
}
}
```
5. 在控制器中使用服务层
```go
func GetUser(c *gin.Context) {
id, _ := strconv.ParseInt(c.Param("id"), 10, 64)
user, err := userService.UserRepository.FindById(id)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"message": err.Error(),
})
return
}
c.JSON(http.StatusOK, user)
}
```
这样,服务层就可以通过依赖注入的方式引用接口层,并实现业务逻辑。
阅读全文