Documentation ¶
Index ¶
- Constants
- Variables
- func Delete(ctx context.Context, dbx *sqlx.DB, record DeleteRecord) (int64, error)
- func Get[T any](ctx context.Context, dbx *sqlx.DB, record GetRecord) (*T, error)
- func GetMap(ctx context.Context, dbx *sqlx.DB, record GetRecord) (map[string]any, error)
- func Insert(ctx context.Context, dbx *sqlx.DB, record InsertRecord, opts ...InsertOption) (int64, error)
- func Update(ctx context.Context, dbx *sqlx.DB, record UpdateRecord) (int64, error)
- func UseDefaultMasterDB(master *sqlx.DB, middlewares ...engine.Middleware)
- func UseDefaultReadDB(read *sqlx.DB, middlewares ...engine.Middleware)
- func UseSaveOmits(omits ...string)
- type Condition
- type ConditionType
- type DB
- func (d *DB) Beginx() (*Tx, error)
- func (d *DB) ExecContext(ctx context.Context, execSQL string, args ...any) (sql.Result, error)
- func (d *DB) GetContext(ctx context.Context, dest any, query string, args ...any) error
- func (d *DB) NamedExecContext(ctx context.Context, execSQL string, arg any) (sql.Result, error)
- func (d *DB) SelectContext(ctx context.Context, dest any, query string, args ...any) error
- type Dao
- func (d *Dao) BatchReplaceInto(models any, opts ...InsertOption) (int64, error)
- func (d *Dao) BatchReplaceIntoContext(ctx context.Context, models any, opts ...InsertOption) (int64, error)
- func (d *Dao) BatchSave(models any, opts ...InsertOption) (int64, error)
- func (d *Dao) BatchSaveContext(ctx context.Context, models any, opts ...InsertOption) (int64, error)
- func (d *Dao) DBColumns(omitColumns ...string) []string
- func (d *Dao) DeleteByColumn(kv *KV) (int64, error)
- func (d *Dao) DeleteByColumnContext(ctx context.Context, kv *KV) (int64, error)
- func (d *Dao) DeleteByColumnTx(tx *sqlx.Tx, kv *KV) (int64, error)
- func (d *Dao) DeleteByColumnTxContext(ctx context.Context, tx *sqlx.Tx, kv *KV) (int64, error)
- func (d *Dao) DeleteByColumns(kvs *MultiKV) (int64, error)
- func (d *Dao) DeleteByColumnsContext(ctx context.Context, kvs *MultiKV) (int64, error)
- func (d *Dao) DeleteByColumnsTx(tx *sqlx.Tx, kvs *MultiKV) (int64, error)
- func (d *Dao) DeleteByColumnsTxContext(ctx context.Context, tx *sqlx.Tx, kvs *MultiKV) (int64, error)
- func (d *Dao) DeleteByID(id any) (bool, error)
- func (d *Dao) DeleteByIDContext(ctx context.Context, id any) (bool, error)
- func (d *Dao) DeleteByIDTx(tx *sqlx.Tx, id any) (bool, error)
- func (d *Dao) DeleteByIDTxContext(ctx context.Context, tx *sqlx.Tx, id any) (bool, error)
- func (d *Dao) Deleter() *sqlbuilder.Deleter
- func (d *Dao) GetByColumn(kv *KV, dest Model) (bool, error)
- func (d *Dao) GetByColumnContext(ctx context.Context, kv *KV, dest Model) (bool, error)
- func (d *Dao) GetByColumnTx(tx *sqlx.Tx, kv *KV, dest Model) (bool, error)
- func (d *Dao) GetByColumnTxContext(ctx context.Context, tx *sqlx.Tx, kv *KV, dest Model) (bool, error)
- func (d *Dao) GetByID(id any, dest Model) (bool, error)
- func (d *Dao) GetByIDContext(ctx context.Context, id any, dest Model) (bool, error)
- func (d *Dao) GetColumnsByModel(model any, omitColumns ...string) []string
- func (d *Dao) GetColumnsByType(typ reflect.Type, omitColumns ...string) []string
- func (d *Dao) IgnoreInto(model Model, opts ...InsertOption) (int64, error)
- func (d *Dao) IgnoreIntoContext(ctx context.Context, model Model, opts ...InsertOption) (int64, error)
- func (d *Dao) Inserter() *sqlbuilder.Inserter
- func (d *Dao) List(kv *KV, dest any) error
- func (d *Dao) ListByColumns(kvs *MultiKV, dest any) error
- func (d *Dao) ListByColumnsContext(ctx context.Context, kvs *MultiKV, dest any) error
- func (d *Dao) ListByColumnsTx(tx *sqlx.Tx, kvs *MultiKV, dest any) error
- func (d *Dao) ListByColumnsTxContext(ctx context.Context, tx *sqlx.Tx, kvs *MultiKV, dest any) error
- func (d *Dao) ListByIDs(dest any, ids ...any) error
- func (d *Dao) ListByIDsContext(ctx context.Context, dest any, ids ...any) error
- func (d *Dao) ListByIDsTx(tx *sqlx.Tx, dest any, ids ...any) error
- func (d *Dao) ListByIDsTxContext(ctx context.Context, tx *sqlx.Tx, dest any, ids ...any) error
- func (d *Dao) ListContext(ctx context.Context, kv *KV, dest any) error
- func (d *Dao) ListTx(tx *sqlx.Tx, kv *KV, dest any) error
- func (d *Dao) ListTxContext(ctx context.Context, tx *sqlx.Tx, kv *KV, dest any) error
- func (d *Dao) ReplaceInto(dest Model, opts ...InsertOption) (int64, error)
- func (d *Dao) ReplaceIntoContext(ctx context.Context, model Model, opts ...InsertOption) (int64, error)
- func (d *Dao) SQLBuilder() *sqlbuilder.Builder
- func (d *Dao) Save(dest Model, opts ...InsertOption) (int64, error)
- func (d *Dao) SaveContext(ctx context.Context, dest Model, opts ...InsertOption) (int64, error)
- func (d *Dao) SaveTx(tx *sqlx.Tx, dest Model, opts ...InsertOption) (int64, error)
- func (d *Dao) SaveTxContext(ctx context.Context, tx *sqlx.Tx, dest Model, opts ...InsertOption) (int64, error)
- func (d *Dao) Selector(columns ...string) *sqlbuilder.Selector
- func (d *Dao) TableName() string
- func (d *Dao) Update(m Model, omitColumns ...string) (bool, error)
- func (d *Dao) UpdateContext(ctx context.Context, m Model, omitColumns ...string) (bool, error)
- func (d *Dao) UpdateField(idValue any, fieldMap map[string]any) (bool, error)
- func (d *Dao) UpdateFieldContext(ctx context.Context, idValue any, fieldMap map[string]any) (bool, error)
- func (d *Dao) UpdateFieldTx(tx *sqlx.Tx, idValue any, fieldMap map[string]any) (bool, error)
- func (d *Dao) UpdateFieldTxContext(ctx context.Context, tx *sqlx.Tx, idValue any, fieldMap map[string]any) (bool, error)
- func (d *Dao) UpdateTx(tx *sqlx.Tx, m Model, omitColumns ...string) (bool, error)
- func (d *Dao) UpdateTxContext(ctx context.Context, tx *sqlx.Tx, m Model, omitColumns ...string) (bool, error)
- func (d *Dao) Updater() *sqlbuilder.Updater
- func (d *Dao) With(master, read *sqlx.DB) *Dao
- func (d *Dao) WithTableName(tableName string) *Dao
- type DeleteRecord
- type GetRecord
- type InsertOption
- type InsertOptions
- type InsertRecord
- type KV
- type Meta
- type Model
- type MultiKV
- type Op
- type Option
- func IsAutoIncrement() Option
- func WithDBMaster(master *sqlx.DB) Option
- func WithDBRead(read *sqlx.DB) Option
- func WithIfNullVal(col string, val string) Option
- func WithIfNullVals(vals map[string]string) Option
- func WithMapper(mapper *reflectx.Mapper) Option
- func WithMiddleware(middlewares ...engine.Middleware) Option
- func WithOmitColumns(omitColumns ...string) Option
- func WithTableName(tableName string) Option
- type Options
- type OrderField
- type OrderType
- type Page
- type QueryRecord
- type TableMeta
- type Tx
- func (t *Tx) ExecContext(ctx context.Context, execSQL string, args ...any) (sql.Result, error)
- func (t *Tx) GetContext(ctx context.Context, dest any, query string, args ...any) error
- func (t *Tx) NamedExecContext(ctx context.Context, execSQL string, arg any) (sql.Result, error)
- func (t *Tx) SelectContext(ctx context.Context, dest any, query string, args ...any) error
- type TxFun
- type TxManager
- type UpdateRecord
Constants ¶
const ( OpAnd Op = "and" OpOr Op = "or" ConditionTypeEq ConditionType = "eq" // 等于 ConditionTypeNotEq ConditionType = "not_eq" // 不等于 ConditionTypeLike ConditionType = "like" // 模糊匹配 ConditionTypeNotLike ConditionType = "not_like" // 不包含 ConditionTypeIn ConditionType = "in" // in ConditionTypeNotIn ConditionType = "not_in" // not in ConditionTypeGt ConditionType = "gt" // 大于 ConditionTypeLt ConditionType = "lt" // 小于 ConditionTypeGte ConditionType = "gte" // 大于等于 ConditionTypeLte ConditionType = "lte" // 小于等于 OrderTypeAsc OrderType = "asc" // 升序 OrderTypeDesc OrderType = "desc" // 降序 )
Variables ¶
var ( ErrUpdatePrimaryKeyRequire = errors.New("[daox] Primary key require for update") ErrTxNil = errors.New("[daox] Tx is nil") )
Functions ¶
func Insert ¶
func Insert(ctx context.Context, dbx *sqlx.DB, record InsertRecord, opts ...InsertOption) (int64, error)
Insert 通用 insert 操作
func UseDefaultMasterDB ¶
func UseDefaultMasterDB(master *sqlx.DB, middlewares ...engine.Middleware)
UseDefaultMasterDB 默认主库
func UseDefaultReadDB ¶
func UseDefaultReadDB(read *sqlx.DB, middlewares ...engine.Middleware)
UseDefaultReadDB 默认从库
Types ¶
type Condition ¶
type Condition struct { Disable bool `json:"disable"` // true 禁用该条件 Op Op `json:"op"` // and or 连接符 Field string `json:"field"` // 查询条件字段 Vals []any `json:"vals"` // 查询字段值 ConditionType ConditionType `json:"condition_type"` // 查找类型 }
Condition 条件语句
type ConditionType ¶
type ConditionType string
type DB ¶
DB 包装 sqlx.DB
func (*DB) ExecContext ¶
ExecContext 使用数组参数执行sql
func (*DB) GetContext ¶
GetContext 查询单条数据
func (*DB) NamedExecContext ¶
NamedExecContext 使用命名参数执行sql
type Dao ¶
type Dao struct { TableMeta TableMeta // contains filtered or unexported fields }
Dao 数据访问
func NewDao ¶
NewDao 创建一个新的 dao 对象 tableName 参数表示表名 primaryKey 参数表示主键 structType 参数表示数据结构类型 opts 参数表示可选的选项 返回值为创建的Dao对象指针
func (*Dao) BatchReplaceInto ¶
func (d *Dao) BatchReplaceInto(models any, opts ...InsertOption) (int64, error)
BatchReplaceInto 批量新增,使用 replace into 方式 models 是一个 slice omitColumns 不需要 insert 的字段
func (*Dao) BatchReplaceIntoContext ¶
func (d *Dao) BatchReplaceIntoContext(ctx context.Context, models any, opts ...InsertOption) (int64, error)
BatchReplaceIntoContext 批量新增,使用 replace into 方式,携带上下文 models 是一个 slice omitColumns 不需要 insert 的字段
func (*Dao) BatchSave ¶
func (d *Dao) BatchSave(models any, opts ...InsertOption) (int64, error)
BatchSave 批量新增,携带上下文 omitColumns 不需要 insert 的字段
func (*Dao) BatchSaveContext ¶
func (d *Dao) BatchSaveContext(ctx context.Context, models any, opts ...InsertOption) (int64, error)
BatchSaveContext 批量新增 omitColumns 不需要 insert 的字段 models 是一个批量 insert 的 slice
func (*Dao) DeleteByColumn ¶
DeleteByColumn 按字段名删除
func (*Dao) DeleteByColumnContext ¶
DeleteByColumnContext 按字段名删除,携带上下文
func (*Dao) DeleteByColumnTx ¶
DeleteByColumnTx 按字段名删除,支持事务
func (*Dao) DeleteByColumnTxContext ¶
DeleteByColumnTxContext 按字段名删除,支持事务,携带上下文
func (*Dao) DeleteByColumns ¶
DeleteByColumns 指定字段删除多个值
func (*Dao) DeleteByColumnsContext ¶
DeleteByColumnsContext 指定字段删除多个值,携带上下文
func (*Dao) DeleteByColumnsTx ¶
DeleteByColumnsTx 指定字段多个值删除
func (*Dao) DeleteByColumnsTxContext ¶
func (d *Dao) DeleteByColumnsTxContext(ctx context.Context, tx *sqlx.Tx, kvs *MultiKV) (int64, error)
DeleteByColumnsTxContext 指定字段多个值删除,携带上下文
func (*Dao) DeleteByIDContext ¶
DeleteByIDContext 根据id删除数据,携带上下文
func (*Dao) DeleteByIDTx ¶
DeleteByIDTx 根据id删除数据,支持事务
func (*Dao) DeleteByIDTxContext ¶
DeleteByIDTxContext 根据id删除数据,支持事务,携带上下文
func (*Dao) GetByColumn ¶
GetByColumn 按指定字段查询单条数据 bool 数据是否存在
func (*Dao) GetByColumnContext ¶
GetByColumnContext 按指定字段查询单条数据,携带上下文 bool 数据是否存在
func (*Dao) GetByColumnTx ¶
GetByColumnTx 按指定字段查询单条数据,支持事务 bool 数据是否存在
func (*Dao) GetByColumnTxContext ¶
func (d *Dao) GetByColumnTxContext(ctx context.Context, tx *sqlx.Tx, kv *KV, dest Model) (bool, error)
GetByColumnTxContext 按指定字段查询单条数据,支持事务,携带上下文 bool 数据是否存在
func (*Dao) GetByIDContext ¶
GetByIDContext 根据 id 查询单条数据,携带上下文
func (*Dao) GetColumnsByModel ¶
GetColumnsByModel 根据 model 结构获取数据库字段 omitColumns 表示需要忽略的字段
func (*Dao) GetColumnsByType ¶
GetColumnsByType 通过字段 tag 解析数据库字段
func (*Dao) IgnoreInto ¶
func (d *Dao) IgnoreInto(model Model, opts ...InsertOption) (int64, error)
IgnoreInto 使用 INSERT IGNORE INTO 如果记录已存在则忽略 omitColumns 不需要 insert 的字段
func (*Dao) IgnoreIntoContext ¶
func (d *Dao) IgnoreIntoContext(ctx context.Context, model Model, opts ...InsertOption) (int64, error)
IgnoreIntoContext 使用 INSERT IGNORE INTO 如果记录已存在则忽略,携带上下文 omitColumns 不需要 insert 的字段
func (*Dao) ListByColumns ¶
ListByColumns 指定字段多个值查询多条数据 dest: slice pointer
func (*Dao) ListByColumnsContext ¶
ListByColumnsContext 指定字段多个值查询多条数据,携带上下文 dest: slice pointer
func (*Dao) ListByColumnsTx ¶
ListByColumnsTx 指定字段多个值查询多条数据,支持事务
func (*Dao) ListByColumnsTxContext ¶
func (d *Dao) ListByColumnsTxContext(ctx context.Context, tx *sqlx.Tx, kvs *MultiKV, dest any) error
ListByColumnsTxContext 指定字段多个值查询多条数据,支持事务,携带上下文
func (*Dao) ListByIDsContext ¶
ListByIDsContext 根据 id 查询多条数据,携带上下文
func (*Dao) ListByIDsTx ¶
ListByIDsTx 查询多个id值,支持事务
func (*Dao) ListByIDsTxContext ¶
ListByIDsTxContext 查询多个id值,支持事务,携带上下文
func (*Dao) ListContext ¶
ListContext 指定字段查询多条数据,携带上下文
func (*Dao) ListTxContext ¶
ListTxContext 指定字段查询多条数据,支持事务,携带上下文
func (*Dao) ReplaceInto ¶
func (d *Dao) ReplaceInto(dest Model, opts ...InsertOption) (int64, error)
ReplaceInto replace into table omitColumns 不需要 insert 的字段
func (*Dao) ReplaceIntoContext ¶
func (d *Dao) ReplaceIntoContext(ctx context.Context, model Model, opts ...InsertOption) (int64, error)
ReplaceIntoContext replace into table,携带上下文 omitColumns 不需要 insert 的字段
func (*Dao) SQLBuilder ¶
func (d *Dao) SQLBuilder() *sqlbuilder.Builder
SQLBuilder 创建当前表的 sqlbuilder
func (*Dao) Save ¶
func (d *Dao) Save(dest Model, opts ...InsertOption) (int64, error)
Save 插入数据 omitColumns 不需要 insert 的字段
func (*Dao) SaveContext ¶
SaveContext 插入数据,携带上下文 omitColumns 不需要 insert 的字段
func (*Dao) SaveTxContext ¶
func (d *Dao) SaveTxContext(ctx context.Context, tx *sqlx.Tx, dest Model, opts ...InsertOption) (int64, error)
SaveTxContext 插入数据,支持事务,携带上下文 omitColumns 不需要 insert 的字段
func (*Dao) Selector ¶
func (d *Dao) Selector(columns ...string) *sqlbuilder.Selector
Selector 创建当前表的 Selector columns 是查询指定字段,为空则是全部字段
func (*Dao) UpdateContext ¶
UpdateContext 全字段更新,携带上下文
func (*Dao) UpdateField ¶
UpdateField 部分字段更新
func (*Dao) UpdateFieldContext ¶
func (d *Dao) UpdateFieldContext(ctx context.Context, idValue any, fieldMap map[string]any) (bool, error)
UpdateFieldContext 部分字段更新,携带上下文
func (*Dao) UpdateFieldTx ¶
UpdateFieldTx 部分字段更新,支持事务
func (*Dao) UpdateFieldTxContext ¶
func (d *Dao) UpdateFieldTxContext(ctx context.Context, tx *sqlx.Tx, idValue any, fieldMap map[string]any) (bool, error)
UpdateFieldTxContext 部分字段更新,支持事务,携带上下文
func (*Dao) UpdateTxContext ¶
func (d *Dao) UpdateTxContext(ctx context.Context, tx *sqlx.Tx, m Model, omitColumns ...string) (bool, error)
UpdateTxContext 全字段更新,支持事务,携带上下文
func (*Dao) WithTableName ¶
WithTableName 使用新的数据库连接创建 Dao
type DeleteRecord ¶
type DeleteRecord struct { TableName string `json:"table_name"` // 表名 Conditions []Condition `json:"conditions"` // 条件字段 }
DeleteRecord 删除记录
type GetRecord ¶
type GetRecord struct { TableName string `json:"table_name"` // 查询表 Fields []string `json:"fields"` // 投影字段 Conditions []Condition `json:"conditions,omitempty"` // 查找字段 }
GetRecord 单条记录查询
type InsertOption ¶
type InsertOption func(*InsertOptions)
func DisableGlobalInsertOmits ¶
func DisableGlobalInsertOmits(disable bool) InsertOption
DisableGlobalInsertOmits insert 数据时,禁用全局忽略字段
func WithInsertOmits ¶
func WithInsertOmits(omits ...string) InsertOption
WithInsertOmits 当前 insert 时,忽略的字段
type InsertOptions ¶
type InsertOptions struct {
// contains filtered or unexported fields
}
InsertOptions insert 选项
type InsertRecord ¶
type InsertRecord struct { TableName string `json:"table_name"` // 表名 Row map[string]any `json:"row"` // 行数据 }
InsertRecord 插入记录
type Meta ¶
type Meta interface { TableName() string PrimaryKey() string IsAutoIncrement() bool Columns() []string }
Meta 数据库表元信息定义接口
type Option ¶
type Option func(*Options)
func WithIfNullVals ¶
WithIfNullVals 设置字段(多个)为null时的默认值
func WithMiddleware ¶
func WithMiddleware(middlewares ...engine.Middleware) Option
WithMiddleware 设置中间件
type OrderField ¶
OrderField 排序字段
type Page ¶
type Page struct { Offset int64 `json:"offset"` // 游标起始位置 Limit int64 `json:"limit"` // 每页记录数 HasNext bool `json:"has_next"` // 是否有下一页 Count int64 `json:"count"` // 总记录数 QueryCount bool `json:"query_count"` // 是否查询总数 }
Page 分页参数
type QueryRecord ¶
type QueryRecord struct { TableName string `json:"table_name"` // 查询表 Fields []string `json:"fields"` // 投影字段 Conditions []Condition `json:"conditions,omitempty"` // 查找字段 OrderFields []OrderField `json:"order_fields,omitempty"` // 排序字段 Page *Page `json:"page,omitempty"` // 分页参数 }
QueryRecord 查询参数
func (QueryRecord) ToCountSQLArgs ¶
func (q QueryRecord) ToCountSQLArgs() (sql string, args []any, err error)
ToCountSQLArgs 返回 count 查询 sql 语句和参数
type TableMeta ¶
TableMeta 数据库表元信息
func GetMetaInfo ¶
GetMetaInfo 根据表名获得元信息
func (TableMeta) OmitColumns ¶
OmitColumns 数据库表字段 omit 包含的字段
func (TableMeta) WithTableName ¶
WithTableName 设置表名,一般用在分表的场景,设置实际物理表名
type Tx ¶
func (*Tx) ExecContext ¶
ExecContext 使用数组参数执行sql
func (*Tx) GetContext ¶
GetContext 查询单条数据
func (*Tx) NamedExecContext ¶
NamedExecContext 使用命名参数执行sql