增删查改接口
接口定义
创建事务管理器后,我们需要为每个实体创建一个数据访问接口:
userDataAccess := rdb.NewTxDataAccess[UserEntity](tm)方法NewTxDataAccess返回一个TxDataAccess实例,该实例由用于CRUD操作的DataAccess接口和用于事务操作的TransactionManager接口组成。
package core
type DataAccess[E Entity] interface {
Get(ctx context.Context, id any) (*E, error)
Delete(ctx context.Context, id any) (int64, error)
Query(ctx context.Context, query Query) ([]E, error)
Count(ctx context.Context, query Query) (int64, error)
DeleteByQuery(ctx context.Context, query Query) (int64, error)
Page(ctx context.Context, query Query) (PageList[E], error)
Create(ctx context.Context, entity *E) (int64, error)
CreateMulti(ctx context.Context, entities []E) (int64, error)
Update(ctx context.Context, entity E) (int64, error)
Patch(ctx context.Context, entity E) (int64, error)
PatchByQuery(ctx context.Context, entity E, query Query) (int64, error)
}
type TxDataAccess[E Entity] interface {
TransactionManager
DataAccess[E]
}
type PageList[D any] struct {
List []D `json:"list"`
Total int64 `json:"total"`
}DataAccess接口中的所有方法一共只接收4类参数:
context.Context可以是普通的Context,也可以是开启了事务的TransactionContextid实体的主键Entity实体对象,用于映射表名和列名,需要组合IntId或者Int64IdQuery查询对象,用于动态构造查询条件和分页语句,需要组合PageQuery
对于Entity的定义,请参考:
对于Query的定义,请参考:
示例
以下接口调用示例基于实体对象UserEntity和查询对象UserQuery:
调用示例
Get
根据id查询数据:
Query
根据查询条件查询数据:
Count
根据查询条件查询数据的总数:
Page
根据查询条件查询数据和总数:
Delete
根据id删除数据:
DeleteByQuery
根据查询条件删除数据:
Create
创建单条数据:
CreateMulti
创建多条数据:
Update
根据id更新所有字段:
Patch
根据id更新所有非空字段:
PatchByQuery
根据查询条件更新所有非空字段:
最后更新于
这有帮助吗?