83 lines
1.7 KiB
Markdown
83 lines
1.7 KiB
Markdown
# 存储层
|
|
|
|
本模块负责数据访问层的实现,提供数据库操作接口。
|
|
|
|
## 功能特性
|
|
|
|
- 统一的数据库连接管理
|
|
- 自动数据库迁移
|
|
- 接口化的数据访问层
|
|
- 支持分页查询
|
|
- 支持条件查询
|
|
|
|
## 模块结构
|
|
|
|
```
|
|
storage/
|
|
├── database.go # 数据库连接和迁移
|
|
├── user_storage.go # 用户数据访问
|
|
├── role_storage.go # 角色数据访问
|
|
├── menu_storage.go # 菜单数据访问
|
|
├── log_storage.go # 日志数据访问
|
|
└── README.md # 说明文档
|
|
```
|
|
|
|
## 使用方法
|
|
|
|
### 初始化数据库
|
|
|
|
```go
|
|
// 初始化数据库连接
|
|
err := storage.InitDatabase()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// 自动迁移数据库表
|
|
err = storage.AutoMigrate()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
```
|
|
|
|
### 使用存储接口
|
|
|
|
```go
|
|
// 创建用户存储实例
|
|
userStorage := storage.NewUserStorage()
|
|
|
|
// 创建用户
|
|
user := &models.User{
|
|
Username: "admin",
|
|
Email: "admin@example.com",
|
|
Password: "password",
|
|
}
|
|
err := userStorage.Create(user)
|
|
|
|
// 获取用户列表
|
|
req := &models.UserListRequest{
|
|
PageRequest: models.PageRequest{Page: 1, Size: 10},
|
|
Username: "admin",
|
|
}
|
|
users, total, err := userStorage.List(req)
|
|
```
|
|
|
|
## 接口设计
|
|
|
|
所有存储接口都遵循统一的模式:
|
|
|
|
- `Create()` - 创建记录
|
|
- `GetByID()` - 根据ID获取记录
|
|
- `Update()` - 更新记录
|
|
- `Delete()` - 删除记录
|
|
- `List()` - 获取列表(支持分页和条件查询)
|
|
|
|
## 数据库配置
|
|
|
|
数据库配置通过配置文件进行管理,支持以下配置项:
|
|
|
|
- `dsn` - 数据库连接字符串
|
|
- `maxIdleConns` - 最大空闲连接数
|
|
- `maxOpenConns` - 最大打开连接数
|
|
|