mysql

package
v1.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

数据库操作方法统一封装 Author: sywen

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Db

type Db struct {
	Prefix string // 数据库表前缀
	Conn   *gorm.DB
	Error  error
}

func (*Db) Create

func (db *Db) Create(datas interface{}) (num int64, err error)

Create 创建单条数据 datas: interface{} 待插入的数据,传值需加地址符&

集合:map[string]interface{} , 根据 map 创建记录时,association 不会被调用,且主键也不会自动填充
结构体:struct{} , 此方式会触发grom的自动补充值机制

return:

num: int 操作影响的行数

func (*Db) CreateBatch

func (db *Db) CreateBatch(datas interface{}) (num int64, err error)

CreateBatch 批量插入数据 datas: interface{} 待插入的数据切片,传值需加地址符&

集合:map[string]interface{} , 根据 map 创建记录时,association 不会被调用,且主键也不会自动填充
结构体:struct{} , 此方式会触发grom的自动补充值机制

return: int64 成功插入的数据条数

func (*Db) CreateInBatch

func (db *Db) CreateInBatch(datas interface{}, batchSize int) (num int64, err error)

CreateInBatch 批量分批插入数据 datas: interface{} 待插入的数据切片,此处传值不需加地址符&

集合:map[string]interface{} , 根据 map 创建记录时,association 不会被调用,且主键也不会自动填充
结构体:struct{} , 此方式会触发grom的自动补充值机制

batchSize: int 指定每批的数量 return: int64 成功插入的数据条数

func (*Db) Delete

func (db *Db) Delete(model interface{}, params FilterParams, scoped bool) (num int64, err error)

Delete 支持真删除和软删除 params: FilterParams 匹配条件 model: interface{} 需要操作的数据表模型,传值需加地址符& scoped: bool 真删除=true 软删除=false

func (*Db) Exec

func (db *Db) Exec(sql string, values ...interface{}) (num int64, err error)

Exec 执行原生sql(非查询操作) sql: string 原生sql语句 values: ...interface{} 多参数值映射 num: 影响的行数 err: 错误信息

func (*Db) FilterWhere

func (db *Db) FilterWhere(params FilterParams) (*gorm.DB, reflect.Type)

FilterWhere 统一处理查询条件 params: FilterParams 查询条件

func (*Db) GetList

func (db *Db) GetList(params FilterParams) (res []map[string]interface{}, count int64, err error)

GetList 查询数据列表 params: FilterParams 查询条件 return:

res: []map[string]interface{} 查询结果
count: int64 匹配查询条件的总记录数

func (*Db) GetListCursor

func (db *Db) GetListCursor(params FilterParams, limitSize int, cursorWhere ...QueryArgs) (res []map[string]interface{}, count int64, err error)

GetListCursor 游标法查询数据列表 params: FilterParams 查询条件 limitSize: int 查询数据条数 cursorWhere: []QueryArgs 游标过滤条件 return:

res: []map[string]interface{} 查询结果
count: int64 匹配查询条件的总记录数

func (*Db) GetOne

func (db *Db) GetOne(params FilterParams) (res map[string]interface{}, err error)

查询单条数据 params: FilterParams 查询条件 res: map[string]interface{} 查询结果

func (*Db) Raw

func (db *Db) Raw(res interface{}, sql string, values ...interface{}) (interface{}, error)

Raw 执行原生sql查询 res: interface{} 存储查询结果,传值需加地址符& sql: string 原生sql语句 values: ...interface{} 多参数值映射

func (*Db) Update

func (db *Db) Update(params FilterParams, datas interface{}) (num int64, err error)

Update 更新数据--gorm支持Update更新单个字段,Updates更新多个字段,统一使用Updates()方法 params: FilterParams{Table: "", Where: map[string]interface{}} datas: 有两种传值方式:指定更新字段,传值需加地址符&

集合:map[string]interface{} , 根据 map 创建记录时,association 不会被调用,且主键也不会自动填充
结构体:struct{} , 此方式会触发grom的自动补充值机制

return: int64 返回操作影响的行数

type FilterParams

type FilterParams struct {
	Table    string        // 主表名
	Fields   []string      // 指定字段
	Where    QueryArgs     // 指定where条件
	Or       QueryArgs     // or条件
	Not      QueryArgs     // not条件
	Join     []QueryArgs   // 链表查询, 传值格式[]QueryArgs{}
	Order    []interface{} // 字段排序
	Group    string        // 指定分组查询
	Having   QueryArgs     // 指定having()条件
	Limit    [2]int        // 限制[limit,offset]
	Distinct []interface{} // 指定选择 distinct values
}

定义查询条件入参结构体

type QueryArgs

type QueryArgs struct {
	Query interface{}   // 参数化query语句
	Args  []interface{} // 参数切片
}

func(query, args...) 类方法传参结构体

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL