Documentation ¶
Index ¶
- Constants
- Variables
- type BaseField
- type Dept
- func (m *Dept) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *Dept) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *Dept) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *Dept) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (t Dept) DeptByPid(ctx context.Context, pid uint, dept *Dept) error
- func (m *Dept) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *Dept) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *Dept) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *Dept) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *Dept) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *Dept) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *Dept) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *Dept) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *Dept) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *Dept) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t Dept) TableName() string
- func (m *Dept) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *Dept) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type Manager
- func (m *Manager) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *Manager) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *Manager) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *Manager) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *Manager) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *Manager) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *Manager) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *Manager) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *Manager) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *Manager) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *Manager) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *Manager) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *Manager) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *Manager) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t Manager) TableName() string
- func (m *Manager) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *Manager) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type ManagerDept
- func (m *ManagerDept) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *ManagerDept) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *ManagerDept) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *ManagerDept) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *ManagerDept) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *ManagerDept) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *ManagerDept) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *ManagerDept) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *ManagerDept) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *ManagerDept) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *ManagerDept) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *ManagerDept) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *ManagerDept) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *ManagerDept) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t ManagerDept) TableName() string
- func (m *ManagerDept) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *ManagerDept) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type ManagerOpen
- func (m *ManagerOpen) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *ManagerOpen) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *ManagerOpen) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *ManagerOpen) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *ManagerOpen) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *ManagerOpen) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *ManagerOpen) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *ManagerOpen) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *ManagerOpen) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *ManagerOpen) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *ManagerOpen) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *ManagerOpen) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *ManagerOpen) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *ManagerOpen) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t ManagerOpen) TableName() string
- func (m *ManagerOpen) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *ManagerOpen) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type ManagerRole
- func (m *ManagerRole) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *ManagerRole) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *ManagerRole) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *ManagerRole) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *ManagerRole) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *ManagerRole) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *ManagerRole) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *ManagerRole) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *ManagerRole) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *ManagerRole) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *ManagerRole) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *ManagerRole) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *ManagerRole) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *ManagerRole) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t ManagerRole) TableName() string
- func (m *ManagerRole) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *ManagerRole) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type Menu
- func (m *Menu) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *Menu) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *Menu) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *Menu) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *Menu) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *Menu) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *Menu) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *Menu) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *Menu) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *Menu) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *Menu) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *Menu) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *Menu) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *Menu) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t Menu) TableName() string
- func (m *Menu) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *Menu) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type MenuRoute
- func (m *MenuRoute) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *MenuRoute) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *MenuRoute) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *MenuRoute) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *MenuRoute) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *MenuRoute) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *MenuRoute) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *MenuRoute) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *MenuRoute) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *MenuRoute) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *MenuRoute) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *MenuRoute) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *MenuRoute) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *MenuRoute) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t MenuRoute) TableName() string
- func (m *MenuRoute) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *MenuRoute) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type Role
- func (m *Role) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *Role) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *Role) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *Role) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *Role) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *Role) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *Role) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *Role) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *Role) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *Role) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *Role) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *Role) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *Role) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *Role) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t Role) TableName() string
- func (m *Role) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *Role) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type RoleMenu
- func (m *RoleMenu) Columns(ctx context.Context, where []Where, target interface{}, field string, ...) error
- func (m *RoleMenu) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
- func (m *RoleMenu) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
- func (m *RoleMenu) DeleteByWhere(ctx context.Context, where []Where) (int64, error)
- func (m *RoleMenu) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
- func (m *RoleMenu) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
- func (m *RoleMenu) InsertOne(ctx context.Context, data schema.Tabler, fields ...string) error
- func (m *RoleMenu) InsertOneUseMap(ctx context.Context, data map[string]interface{}) error
- func (m *RoleMenu) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, ...) (err error)
- func (m *RoleMenu) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, ...) (err error)
- func (m *RoleMenu) MultiInsert(ctx context.Context, data interface{}, fields ...string) error
- func (m *RoleMenu) MultiInsertUseMap(ctx context.Context, data []map[string]interface{}) error
- func (m *RoleMenu) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, ...) (err error)
- func (m *RoleMenu) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, ...) (err error)
- func (t RoleMenu) TableName() string
- func (m *RoleMenu) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
- func (m *RoleMenu) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
- type Where
Constants ¶
const ( In = "IN" // 在指定枚举值范围内 NotIn = "NOT IN" // 不在指定枚举值范围内 Between = "BETWEEN" // 在指定范围内 NotBetween = "NOT BETWEEN" // 不在指定范围内 Like = "LIKE" // 模糊查询like FindINSet = "FIND_IN_SET" // find in set Raw = "RAW" // 原样输出 EQ = "=" // equal 等于<=> NEQ = "<>" // not equal 不等于(!=、<>) GT = ">" // greater than 大于 GTE = ">=" // greater than or equal 大于等于 LT = "<" // less than 小于 LTE = "<" // less than or equal 小于等于 )
定义Where条件常量便于IDE追踪
Variables ¶
var ( DeptModel Dept ManagerModel Manager MenuModel Menu RoleModel Role ManagerDeptModel ManagerDept ManagerRoleModel ManagerRole ManagerOpenModel ManagerOpen MenuRouteModel MenuRoute RoleMenuModel RoleMenu )
定义所有模型实例的单例,模型变量instance
① 本质是一个结构体零值 ② 因模型需要嵌入通用方法需要在init方法中调用不可导出的初始化方法进行模型初始化 ③ 模型结构体会在控制器、服务类乃至helper、entry方法中调用,模型定义不可反向应用这些位置的包,否则可能导致循环引用错误
Functions ¶
This section is empty.
Types ¶
type BaseField ¶
type BaseField struct { ID uint `gorm:"primaryKey"` CreatedAt uint `gorm:"autoCreateTime"` UpdatedAt uint `gorm:"autoCreateTime,autoUpdateTime"` }
BaseField 通用基础字段
type Dept ¶
type Dept struct { Name string `json:"name"` Pid uint `json:"pid"` Level uint8 `json:"level"` Sort uint `json:"sort"` Remark string `json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
Dept 表模型Dept表
func (*Dept) Columns ¶
func (m *Dept) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*Dept) CountByWhere ¶
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*Dept) DeleteByPrimary ¶
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*Dept) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*Dept) FindByPrimary ¶
func (m *Dept) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Dept) FindByWhere ¶
func (m *Dept) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Dept) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Dept) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Dept) ListByOriginWhere ¶
func (m *Dept) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*Dept) ListByWhere ¶
func (m *Dept) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Dept) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Dept) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Dept) Paginate ¶
func (m *Dept) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Dept) SimplePaginate ¶
func (m *Dept) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Dept) UpdateByWhere ¶
func (m *Dept) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
type Manager ¶
type Manager struct { Name string `json:"name"` Account string `json:"account"` Password string `json:"password"` Mobile string `json:"mobile"` Email string `json:"email"` IsRoot uint8 `json:"is_root"` Enable uint8 `json:"enable"` Remark string `json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
Manager 表模型manager表
func (*Manager) Columns ¶
func (m *Manager) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*Manager) CountByWhere ¶
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*Manager) DeleteByPrimary ¶
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*Manager) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*Manager) FindByPrimary ¶
func (m *Manager) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Manager) FindByWhere ¶
func (m *Manager) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Manager) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Manager) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Manager) ListByOriginWhere ¶
func (m *Manager) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*Manager) ListByWhere ¶
func (m *Manager) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Manager) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Manager) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Manager) Paginate ¶
func (m *Manager) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Manager) SimplePaginate ¶
func (m *Manager) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Manager) UpdateByWhere ¶
func (m *Manager) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
func (*Manager) UpdateOne ¶
func (m *Manager) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
UpdateOne 通过model的主键字段更新指定字段
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个可选参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值,不指定则data结构体中零值字段不会更新>
- data:model实例对象,字段填充好需要更新的值 例如:var a Ad; a.ID=1;a.Name="Tom" 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段去更新 []string{"name", "sex"}...
type ManagerDept ¶
type ManagerDept struct { ManagerID uint `json:"manager_id"` DeptID uint `json:"dept_id"` Sort uint `json:"sort"` Remark string `json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
ManagerDept 表模型ManagerDept表
func (*ManagerDept) Columns ¶
func (m *ManagerDept) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*ManagerDept) CountByWhere ¶
func (m *ManagerDept) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*ManagerDept) DeleteByPrimary ¶
func (m *ManagerDept) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*ManagerDept) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*ManagerDept) FindByPrimary ¶
func (m *ManagerDept) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerDept) FindByWhere ¶
func (m *ManagerDept) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerDept) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*ManagerDept) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*ManagerDept) ListByOriginWhere ¶
func (m *ManagerDept) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*ManagerDept) ListByWhere ¶
func (m *ManagerDept) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerDept) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*ManagerDept) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*ManagerDept) Paginate ¶
func (m *ManagerDept) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerDept) SimplePaginate ¶
func (m *ManagerDept) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerDept) UpdateByWhere ¶
func (m *ManagerDept) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
func (*ManagerDept) UpdateOne ¶
func (m *ManagerDept) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
UpdateOne 通过model的主键字段更新指定字段
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个可选参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值,不指定则data结构体中零值字段不会更新>
- data:model实例对象,字段填充好需要更新的值 例如:var a Ad; a.ID=1;a.Name="Tom" 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段去更新 []string{"name", "sex"}...
type ManagerOpen ¶
type ManagerOpen struct { ManagerID uint `json:"manager_id"` OpenName string `json:"open_name"` OpenType uint8 `json:"open_type"` OpenID string `json:"open_id"` AccessToken string `json:"access_token"` TokenExpireIn uint `json:"token_expire_in"` RefreshToken string `json:"refresh_token"` Figure string `json:"figure"` UnionID string `json:"union_id"` Enable uint8 `json:"enable"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
ManagerOpen 表模型ManagerOpen表
func (*ManagerOpen) Columns ¶
func (m *ManagerOpen) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*ManagerOpen) CountByWhere ¶
func (m *ManagerOpen) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*ManagerOpen) DeleteByPrimary ¶
func (m *ManagerOpen) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*ManagerOpen) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*ManagerOpen) FindByPrimary ¶
func (m *ManagerOpen) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerOpen) FindByWhere ¶
func (m *ManagerOpen) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerOpen) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*ManagerOpen) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*ManagerOpen) ListByOriginWhere ¶
func (m *ManagerOpen) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*ManagerOpen) ListByWhere ¶
func (m *ManagerOpen) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerOpen) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*ManagerOpen) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*ManagerOpen) Paginate ¶
func (m *ManagerOpen) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerOpen) SimplePaginate ¶
func (m *ManagerOpen) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerOpen) UpdateByWhere ¶
func (m *ManagerOpen) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
func (*ManagerOpen) UpdateOne ¶
func (m *ManagerOpen) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
UpdateOne 通过model的主键字段更新指定字段
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个可选参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值,不指定则data结构体中零值字段不会更新>
- data:model实例对象,字段填充好需要更新的值 例如:var a Ad; a.ID=1;a.Name="Tom" 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段去更新 []string{"name", "sex"}...
type ManagerRole ¶
type ManagerRole struct { ManagerID uint `json:"manager_id"` RoleID uint `json:"role_id"` Sort uint `json:"sort"` Remark string ` json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
ManagerRole 表模型ManagerRole表
func (*ManagerRole) Columns ¶
func (m *ManagerRole) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*ManagerRole) CountByWhere ¶
func (m *ManagerRole) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*ManagerRole) DeleteByPrimary ¶
func (m *ManagerRole) DeleteByPrimary(ctx context.Context, primaryKey ...interface{}) (int64, error)
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*ManagerRole) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*ManagerRole) FindByPrimary ¶
func (m *ManagerRole) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerRole) FindByWhere ¶
func (m *ManagerRole) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerRole) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*ManagerRole) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*ManagerRole) ListByOriginWhere ¶
func (m *ManagerRole) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*ManagerRole) ListByWhere ¶
func (m *ManagerRole) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerRole) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*ManagerRole) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*ManagerRole) Paginate ¶
func (m *ManagerRole) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerRole) SimplePaginate ¶
func (m *ManagerRole) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*ManagerRole) UpdateByWhere ¶
func (m *ManagerRole) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
func (*ManagerRole) UpdateOne ¶
func (m *ManagerRole) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
UpdateOne 通过model的主键字段更新指定字段
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个可选参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值,不指定则data结构体中零值字段不会更新>
- data:model实例对象,字段填充好需要更新的值 例如:var a Ad; a.ID=1;a.Name="Tom" 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段去更新 []string{"name", "sex"}...
type Menu ¶
type Menu struct { Name string `json:"name"` Pid int `json:"pid"` Level int `json:"level"` Frontend string `json:"frontend"` Icon string `json:"icon"` Sort int `json:"sort"` Remark string `json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
Menu 表模型menu表
func (*Menu) Columns ¶
func (m *Menu) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*Menu) CountByWhere ¶
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*Menu) DeleteByPrimary ¶
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*Menu) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*Menu) FindByPrimary ¶
func (m *Menu) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Menu) FindByWhere ¶
func (m *Menu) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Menu) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Menu) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Menu) ListByOriginWhere ¶
func (m *Menu) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*Menu) ListByWhere ¶
func (m *Menu) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Menu) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Menu) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Menu) Paginate ¶
func (m *Menu) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Menu) SimplePaginate ¶
func (m *Menu) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Menu) UpdateByWhere ¶
func (m *Menu) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
type MenuRoute ¶
type MenuRoute struct { MenuID uint `json:"menu_id"` Method string `json:"method"` Path string `json:"path"` Sort uint `json:"sort"` Remark string `json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
MenuRoute 表模型MenuRoute表
func (*MenuRoute) Columns ¶
func (m *MenuRoute) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*MenuRoute) CountByWhere ¶
func (m *MenuRoute) CountByWhere(ctx context.Context, where []Where, targetTotal *int64) (err error)
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*MenuRoute) DeleteByPrimary ¶
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*MenuRoute) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*MenuRoute) FindByPrimary ¶
func (m *MenuRoute) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*MenuRoute) FindByWhere ¶
func (m *MenuRoute) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*MenuRoute) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*MenuRoute) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*MenuRoute) ListByOriginWhere ¶
func (m *MenuRoute) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*MenuRoute) ListByWhere ¶
func (m *MenuRoute) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*MenuRoute) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*MenuRoute) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*MenuRoute) Paginate ¶
func (m *MenuRoute) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*MenuRoute) SimplePaginate ¶
func (m *MenuRoute) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*MenuRoute) UpdateByWhere ¶
func (m *MenuRoute) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
func (*MenuRoute) UpdateOne ¶
func (m *MenuRoute) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
UpdateOne 通过model的主键字段更新指定字段
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个可选参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值,不指定则data结构体中零值字段不会更新>
- data:model实例对象,字段填充好需要更新的值 例如:var a Ad; a.ID=1;a.Name="Tom" 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段去更新 []string{"name", "sex"}...
type Role ¶
type Role struct { Name string `json:"name"` Enable uint `json:"enable"` Sort uint `json:"sort"` Remark string `json:"remark"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
Role 表模型role表
func (*Role) Columns ¶
func (m *Role) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*Role) CountByWhere ¶
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*Role) DeleteByPrimary ¶
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*Role) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*Role) FindByPrimary ¶
func (m *Role) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Role) FindByWhere ¶
func (m *Role) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Role) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Role) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Role) ListByOriginWhere ¶
func (m *Role) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*Role) ListByWhere ¶
func (m *Role) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Role) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*Role) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*Role) Paginate ¶
func (m *Role) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Role) SimplePaginate ¶
func (m *Role) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*Role) UpdateByWhere ¶
func (m *Role) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
type RoleMenu ¶
type RoleMenu struct { RoleID uint `json:"role_id"` MenuID uint `json:"menu_id"` BaseField // 引入基础通用字段--主键ID、创建时间、更新时间、软删除时间(若有需要) // contains filtered or unexported fields }
RoleMenu 表模型RoleMenu表
func (*RoleMenu) Columns ¶
func (m *RoleMenu) Columns(ctx context.Context, where []Where, target interface{}, field string, orderBy string) error
Columns 获取列数据
- where:查询条件 Where 结构体切片
- target:查询结果集切片引用,形参为 interface,例如: var a []uint32 \ var b []string 则传参 &a \ &b
- fields:查询的单个字段列名称
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
func (*RoleMenu) CountByWhere ¶
CountByWhere 按where条件统计记录总数
- 查询不到记录返回返回0
- where:查询条件 Where 结构体切片
- targetTotal:查询结果集总条数指针引用
func (*RoleMenu) DeleteByPrimary ¶
DeleteByPrimary 通过主键字段值硬删除1条或多条记录
- 注意:model对象指定需要删除的记录的主键值 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现,本model不支持软删除 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件
- primaryKey:数值类型的主键值,1个或多个 例子1:1 单个主键 例子2:"1" 单个主键字符串类型字面量,本质是个数值 例子3:1,3,4 多个数值类型<多个需要相同类型> 例子4:"1","3","4" 多个数值字符串<多个需要相同类型>
func (*RoleMenu) DeleteByWhere ¶
DeleteByWhere 通过model的主键字段硬删除1条记录
- 注意:软删除功能是一项功能特性,要么全部使用gorm的软删除特性,要么业务删除时调用update方法 gorm软删除特性需在model字段定义时使用 gorm.DeletedAt 类型的字段特性实现 gorm软删除特性引入后查询条件将自动附加过滤已软删除记录的条件,无需手动指定
- where:条件 Where 结构体切片
func (*RoleMenu) FindByPrimary ¶
func (m *RoleMenu) FindByPrimary(ctx context.Context, pVal interface{}, target schema.Tabler, fields ...string) (err error)
FindByPrimary 单主键查询1条记录<仅支持单字段主键不支持符合主键>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- pVal:Primary Value 需要查询的主键字段的值<仅支持数值类型主键,字符串类型不支持> 自定义模型中主键字段通过tag标签 gorm:"primaryKey" 指定的即为主键 若未定义主键,则取定义模型中的第一个字段作为主键字段使用 绝大多数情况下自增主键可使用;复合主键或字符串主键请使用 FindByWhere
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*RoleMenu) FindByWhere ¶
func (m *RoleMenu) FindByWhere(ctx context.Context, where []Where, target schema.Tabler, fields ...string) (err error)
FindByWhere 按where条件查询1条记录<若有多条记录符合要求取按主键升序的第一条记录>
- 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断
- where:查询条件 Where 结构体切片
- target:查询结果集模型引用,形参为 schema.Tabler 接口类型<注意:指针也是接口类型>,需传指针
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*RoleMenu) InsertOne ¶
InsertOne 通过赋值模型创建1条记录
- data:model实例对象,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a Ad; a.XX="yy"; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*RoleMenu) InsertOneUseMap ¶
InsertOneUseMap 通过map键值对创建1条记录
- 注意:创建成功后不会回填主键
- data:新增1条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*RoleMenu) ListByOriginWhere ¶
func (m *RoleMenu) ListByOriginWhere(ctx context.Context, originWhere *gorm.DB, target interface{}, orderBy string, fields ...string) (err error)
ListByOriginWhere 按gorm原始where查询多条确认数量有限的列表记录
①、可用于构造查询条件较为复杂的SQL,包括查询条件包含or、and以及使用括号连起来的分组条件 例如:select * from tb where (id=1 OR name="tom") OR ((sex=0 OR title="leader") AND dept_id=10) ②、特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - originWhere:gorm原始查询条件,使用gorm全局句柄构建,参考下方例子伪代码构造 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}... 例如上述列出SQL的伪代码(注意gg即为originWhere,由g1、g2组合构成): g1 := client.DB.Where("id=?", 1).Or("name=?", "tom") g2 := client.DB.Where(client.DB.Where("sex=?", 0).Or("title=?", "leader")).Where("dept_id=?", 10) gg := client.DB.Where(g1).Or(g2) err := tbModel.ListByOriginWhere(ctx, gg, &target, "id")
func (*RoleMenu) ListByWhere ¶
func (m *RoleMenu) ListByWhere(ctx context.Context, where []Where, target interface{}, orderBy string, fields ...string) (err error)
ListByWhere 按where条件查询多条确认数量有限的列表记录
特别注意:该方法用于查询有限数量的多条记录,不设置limit条件 - 查询不到记录返回 gorm.ErrRecordNotFound 的error 使用errors.Is(result.Error, gorm.ErrRecordNotFound)进行判断 - where:查询条件 Where 结构体切片 - target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a - orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件 - fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*RoleMenu) MultiInsert ¶
MultiInsert 通过赋值模型批量创建
- data:model实例对象切片,请注意不要给主键字段赋值,创建成功后主键字段将填充创建记录的主键值 例如:var a []Ad; 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段创建1条新记录 []string{"name", "sex"}...
func (*RoleMenu) MultiInsertUseMap ¶
MultiInsertUseMap 通过map键值对切片批量创建
- 注意:创建成功后不会回填主键
- data:批量新增多条记录的map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值
func (*RoleMenu) Paginate ¶
func (m *RoleMenu) Paginate(ctx context.Context, where []Where, target interface{}, targetTotal *int64, page, limit int, orderBy string, fields ...string) (err error)
Paginate 分页查询,按where条件分页查询获取分页列表数和总记录数
- 查询不到记录返回返回0和空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- targetTotal:查询结果集总条数指针引用
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*RoleMenu) SimplePaginate ¶
func (m *RoleMenu) SimplePaginate(ctx context.Context, where []Where, target interface{}, page, limit int, orderBy string, fields ...string) (err error)
SimplePaginate 简单分页查询,按where条件分页简要查询获取分页列表数据<不返回总条数减少1次查询>
- 查询不到记录返回返回空切片
- where:查询条件 Where 结构体切片
- target:查询结果集模型的切片引用,形参为 interface,需要传具体model实现<schema.Tabler>的切片引用:需传指针 例如:var a []Ad 传参 &a
- page:查询分页的当前页码数,从1开始
- limit:查询分页的1页多少条限制
- orderBy:排序条件字符串 例子1:`name` <表示按name字段升序> 例子2:`name` ASC <表示按name字段升序> 例子3:`name` ASC, `ID` DESC <表示按name字段升序后按ID降序> 例子4:给空字符串表示不设置排序条件
- fields:查询的字段,可选不传表示默认查询出所有字段 可变参数查询多个字段,使用字符串切片可变参数展开模式可使用字符串切片数组 []string{"name", "sex"}...
func (*RoleMenu) UpdateByWhere ¶
func (m *RoleMenu) UpdateByWhere(ctx context.Context, where []Where, data map[string]interface{}) (int64, error)
UpdateByWhere 通过where条件更新记录
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值>
- where:查询条件 Where 结构体切片
- data:更新的字段map数据,注意map的键为数据库实际字段名而不是结构体FieldName,支持零值更新
func (*RoleMenu) UpdateOne ¶
func (m *RoleMenu) UpdateOne(ctx context.Context, data schema.Tabler, fields ...string) (int64, error)
UpdateOne 通过model的主键字段更新指定字段
- 注意:model对象指定需要更新的单条记录的值,主键字段必须指定值 然后通过第二个可选参数指定需要更新的字段<指定的字段的零值也会被更新为对应的零值,不指定则data结构体中零值字段不会更新>
- data:model实例对象,字段填充好需要更新的值 例如:var a Ad; a.ID=1;a.Name="Tom" 传参 &a
- fields:限定创建语句写入的字段名<指定的字段的零值也会写入>,不传留空则取结构体非零字段去更新 []string{"name", "sex"}...