Documentation
¶
Index ¶
- Variables
- func Batch(ormArray ...*OrmModel) error
- func BatchArray(ormArray []*OrmModel) error
- func BatchFunc(f func(tx *sqlx.Tx) error) error
- func BindDB(DB *sqlx.DB) error
- func ConvertArray[T int | string](array []T) []string
- func Exec(sqlStr string) error
- func ExecRawSQL(sql string, args ...any) error
- func JsonTagToJsonbKeys(obj interface{}, prefix string, igTags ...string) string
- func JsonbBuildObjString(obj interface{}, prefix ...string) string
- func Query(query string, dest any) error
- func Stats() *dbsql.DBStats
- func StructToMap(item any) (map[string]any, map[string]string)
- func Transaction(ctx context.Context, fn func(tx *sqlx.Tx) error) (err error)
- func TransactionCtx(ctx context.Context, fn func(ctx context.Context, tx *sqlx.Tx) error) (err error)
- func TransactionWithOptions(ctx context.Context, opts *dbsql.TxOptions, fn func(tx *sqlx.Tx) error) (err error)
- func TransactionWithOptionsCtx(ctx context.Context, opts *dbsql.TxOptions, ...) (err error)
- func TxFromContext(ctx context.Context) (*sqlx.Tx, bool)
- func ValueTypeToStr(v any) string
- func WithTx(ctx context.Context, tx *sqlx.Tx) context.Context
- type CRUDInterface
- type Client
- func (c *Client) BulkInsert(slice any) *InsertBuilder
- func (c *Client) CopyFrom(slice any) *CopyBuilder
- func (c *Client) DELETE(i ORMInterface) *DeleteBuilder
- func (c *Client) INSERT(i ORMInterface) *InsertBuilder
- func (c *Client) RawSQL(sql string, args ...any) *OrmModel
- func (c *Client) SELECT(i ORMInterface, distinct ...bool) *SelectBuilder
- func (c *Client) Table(name string) *OrmModel
- func (c *Client) Transaction(ctx context.Context, fn func(tx *sqlx.Tx) error) (err error)
- func (c *Client) TransactionCtx(ctx context.Context, fn func(ctx context.Context, tx *sqlx.Tx) error) (err error)
- func (c *Client) TransactionWithOptions(ctx context.Context, opts *dbsql.TxOptions, fn func(tx *sqlx.Tx) error) (err error)
- func (c *Client) TransactionWithOptionsCtx(ctx context.Context, opts *dbsql.TxOptions, ...) (err error)
- func (c *Client) UPDATE(i ORMInterface) *UpdateBuilder
- type ConditionGroup
- func And(tag ...string) ConditionGroup
- func And2F(tag string, arg any) ConditionGroup
- func AndAuto(tag ...string) ConditionGroup
- func AndGroup(cgs ...ConditionGroup) ConditionGroup
- func AnyEquals(tag string, slice any) ConditionGroup
- func ArrayAny(tag string, arg any) ConditionGroup
- func ArrayContains(tag string, arg any) ConditionGroup
- func ArrayOverlap(tag string, arg any) ConditionGroup
- func ArrayOverlaps(tag string, arg any) ConditionGroup
- func Asc(tag string) ConditionGroup
- func AutoFill(zero ...bool) ConditionGroup
- func Between(tag string, min, max any) ConditionGroup
- func Desc(tag string) ConditionGroup
- func Eq(tag string, args ...any) ConditionGroup
- func Exists(sql string, args ...any) ConditionGroup
- func Exp(express string, args ...any) ConditionGroup
- func Fields(tag ...string) ConditionGroup
- func Gt(tag string, args ...any) ConditionGroup
- func Gte(tag string, args ...any) ConditionGroup
- func ILike(tag string, args ...any) ConditionGroup
- func IN[T any](tag string, args ...T) ConditionGroup
- func JoinOn(express string) ConditionGroup
- func JsonContainedBy(tag string, jsonValue any) ConditionGroup
- func JsonContains(tag string, jsonValue any) ConditionGroup
- func JsonPath(tag string, path string, op string, val any) ConditionGroup
- func JsonbContainedBy(tag string, arg any) ConditionGroup
- func JsonbContains(tag string, arg any) ConditionGroup
- func JsonbHasAllKeys(tag string, keys any) ConditionGroup
- func JsonbHasAnyKeys(tag string, keys any) ConditionGroup
- func JsonbHasKey(tag string, key string) ConditionGroup
- func Like(tag ...string) ConditionGroup
- func LikeOR(tag ...string) ConditionGroup
- func Lt(tag string, args ...any) ConditionGroup
- func Lte(tag string, args ...any) ConditionGroup
- func NEq(tag string, args ...any) ConditionGroup
- func NEqLike(tag ...string) ConditionGroup
- func NEqNull(tag ...string) ConditionGroup
- func NotExists(sql string, args ...any) ConditionGroup
- func NotILike(tag string, args ...any) ConditionGroup
- func NotIN[T any](tag string, args ...T) ConditionGroup
- func Null(tag ...string) ConditionGroup
- func NullOR(tag ...string) ConditionGroup
- func Or(tag ...string) ConditionGroup
- func Or2F(tag string, args ...any) ConditionGroup
- func OrAuto(tag ...string) ConditionGroup
- func OrGroup(cgs ...ConditionGroup) ConditionGroup
- func PgOp(tag string, op string, args ...any) ConditionGroup
- func Raw(express string, args ...any) ConditionGroup
- func SubQuery(tag, symbol, sql string, args ...any) ConditionGroup
- type ConditionType
- type CopyBuilder
- func (b *CopyBuilder) Error() error
- func (b *CopyBuilder) ExcludeFields(jsonTags ...string) *CopyBuilder
- func (b *CopyBuilder) Exec() (int64, error)
- func (b *CopyBuilder) Fields(jsonTags ...string) *CopyBuilder
- func (b *CopyBuilder) Table(name string) *CopyBuilder
- func (b *CopyBuilder) Tx(tx *sqlx.Tx) *CopyBuilder
- func (b *CopyBuilder) WithContext(ctx context.Context) *CopyBuilder
- func (b *CopyBuilder) WithDB(db *sqlx.DB) *CopyBuilder
- type DeleteBuilder
- func (b *DeleteBuilder) AllowFullTable() *DeleteBuilder
- func (b *DeleteBuilder) BuildSQL() SQLParams
- func (b *DeleteBuilder) Clone() *DeleteBuilder
- func (b *DeleteBuilder) Error() error
- func (b *DeleteBuilder) Exec() error
- func (b *DeleteBuilder) FullSQL() SQLParams
- func (b *DeleteBuilder) If(ifFunc func(b *DeleteBuilder)) *DeleteBuilder
- func (b *DeleteBuilder) IfWhen(cond bool, fn func(b *DeleteBuilder)) *DeleteBuilder
- func (b *DeleteBuilder) IgnoreZeroRows(ignore ...bool) *DeleteBuilder
- func (b *DeleteBuilder) Log(l bool) *DeleteBuilder
- func (b *DeleteBuilder) Many(dest interface{}) error
- func (b *DeleteBuilder) Model() *OrmModel
- func (b *DeleteBuilder) One(dest interface{}) error
- func (b *DeleteBuilder) Returning(cols ...string) *DeleteBuilder
- func (b *DeleteBuilder) RowsAffected() int64
- func (b *DeleteBuilder) Scan(dest ...interface{}) error
- func (b *DeleteBuilder) Tx(tx *sqlx.Tx) *DeleteBuilder
- func (b *DeleteBuilder) Where(cgs ...ConditionGroup) *DeleteBuilder
- func (b *DeleteBuilder) WhereIf(cond bool, cgs ...ConditionGroup) *DeleteBuilder
- func (b *DeleteBuilder) WherePK() *DeleteBuilder
- func (b *DeleteBuilder) WithContext(ctx context.Context) *DeleteBuilder
- func (b *DeleteBuilder) WithDB(db *sqlx.DB) *DeleteBuilder
- type Error
- type InsertBuilder
- func (b *InsertBuilder) AllowEmpty(jsonTag ...string) *InsertBuilder
- func (b *InsertBuilder) BuildSQL() SQLParams
- func (b *InsertBuilder) Chunk(size int) *InsertBuilder
- func (b *InsertBuilder) Clone() *InsertBuilder
- func (b *InsertBuilder) DoNothing() *InsertBuilder
- func (b *InsertBuilder) DoUpdate(jsonTags ...string) *InsertBuilder
- func (b *InsertBuilder) Error() error
- func (b *InsertBuilder) ExcludeFields(jsonTag ...string) *InsertBuilder
- func (b *InsertBuilder) Exec() error
- func (b *InsertBuilder) Fields(jsonTag ...string) *InsertBuilder
- func (b *InsertBuilder) FullSQL() SQLParams
- func (b *InsertBuilder) If(ifFunc func(b *InsertBuilder)) *InsertBuilder
- func (b *InsertBuilder) IfWhen(cond bool, fn func(b *InsertBuilder)) *InsertBuilder
- func (b *InsertBuilder) IgnoreZeroRows(ignore ...bool) *InsertBuilder
- func (b *InsertBuilder) Log(l bool) *InsertBuilder
- func (b *InsertBuilder) Many(dest interface{}) error
- func (b *InsertBuilder) Model() *OrmModel
- func (b *InsertBuilder) OnConflict(jsonTags ...string) *InsertBuilder
- func (b *InsertBuilder) One(dest interface{}) error
- func (b *InsertBuilder) Returning(cols ...string) *InsertBuilder
- func (b *InsertBuilder) RowsAffected() int64
- func (b *InsertBuilder) Scan(dest ...interface{}) error
- func (b *InsertBuilder) Tx(tx *sqlx.Tx) *InsertBuilder
- func (b *InsertBuilder) Upsert(conflictJsonTags ...string) *InsertBuilder
- func (b *InsertBuilder) WithContext(ctx context.Context) *InsertBuilder
- func (b *InsertBuilder) WithDB(db *sqlx.DB) *InsertBuilder
- type JoinTable
- func INNER_JOIN(i ORMInterface, alias string) *JoinTable
- func InnerJoin(table, alias string) *JoinTable
- func LEFT_JOIN(i ORMInterface, alias string) *JoinTable
- func LeftJoin(table, alias string) *JoinTable
- func NewJoin(joinType JoinType, table, alias string) *JoinTable
- func RIGHT_JOIN(i ORMInterface, alias string) *JoinTable
- func RightJoin(table, alias string) *JoinTable
- type JoinType
- type ORMInterface
- type OrmModel
- func (o *OrmModel) AllowEmpty(jsonTag ...string) *OrmModel
- func (o *OrmModel) AllowFullTable() *OrmModel
- func (o *OrmModel) Asc(jsonTag ...string) *OrmModel
- func (o *OrmModel) Avg(column string) (float64, error)
- func (o *OrmModel) BuildSQL() SQLParams
- func (o *OrmModel) Chunk(size int) *OrmModel
- func (o *OrmModel) Clone() *OrmModel
- func (o *OrmModel) Count(column string) (int64, error)
- func (o *OrmModel) Delete(i interface{}) *DeleteBuilder
- func (o *OrmModel) Desc(jsonTag ...string) *OrmModel
- func (o *OrmModel) DoNothing() *OrmModel
- func (o *OrmModel) DoUpdate(jsonTags ...string) *OrmModel
- func (o *OrmModel) Error() error
- func (o *OrmModel) ExcludeFields(jsonTag ...string) *OrmModel
- func (o *OrmModel) Exec() error
- func (o *OrmModel) Fields(jsonTag ...string) *OrmModel
- func (o *OrmModel) ForUpdate(mode ...string) *OrmModel
- func (o *OrmModel) FullSQL() SQLParams
- func (o *OrmModel) GroupBy(cgs ...ConditionGroup) *OrmModel
- func (o *OrmModel) Having(exp string, args ...any) *OrmModel
- func (o *OrmModel) If(ifFunc func(o *OrmModel)) *OrmModel
- func (o *OrmModel) IfWhen(cond bool, fn func(o *OrmModel)) *OrmModel
- func (o *OrmModel) IgnoreZeroRows(ignore ...bool) *OrmModel
- func (o *OrmModel) Insert(i interface{}) *InsertBuilder
- func (o *OrmModel) Join(join *JoinTable) *OrmModel
- func (o *OrmModel) JsonbList(dest interface{}) error
- func (o *OrmModel) JsonbListString() (string, error)
- func (o *OrmModel) JsonbMap(dest interface{}, columns ...string) error
- func (o *OrmModel) JsonbMapString(keys ...string) (string, error)
- func (o *OrmModel) Limit(row int64) *OrmModel
- func (o *OrmModel) Log(l bool) *OrmModel
- func (o *OrmModel) Many(dest interface{}) error
- func (o *OrmModel) Max(column string) (float64, error)
- func (o *OrmModel) Min(column string) (float64, error)
- func (o *OrmModel) Offset(row int64) *OrmModel
- func (o *OrmModel) OnConflict(jsonTags ...string) *OrmModel
- func (o *OrmModel) One(dest interface{}) error
- func (o *OrmModel) Pluck(field string, dest interface{}) error
- func (o *OrmModel) RETURNING(single any, list any, jsonTag ...string) error
- func (o *OrmModel) Returning(cols ...string) *OrmModel
- func (o *OrmModel) RowsAffected() int64
- func (o *OrmModel) Scan(dest ...interface{}) error
- func (o *OrmModel) Select(i interface{}, distinct ...bool) *SelectBuilder
- func (o *OrmModel) SetExpression(jsonTag string, expr string, args ...any) *OrmModel
- func (o *OrmModel) SetField(jsonTag string, arg any) *OrmModel
- func (o *OrmModel) Sum(column string) (float64, error)
- func (o *OrmModel) Tx(tx *sqlx.Tx) *OrmModel
- func (o *OrmModel) Update(i interface{}) *UpdateBuilder
- func (o *OrmModel) Upsert(conflictJsonTags ...string) *OrmModel
- func (o *OrmModel) Where(cgs ...ConditionGroup) *OrmModel
- func (o *OrmModel) WhereIf(cond bool, cgs ...ConditionGroup) *OrmModel
- func (o *OrmModel) WherePK() *OrmModel
- func (o *OrmModel) With(t string) *OrmModel
- func (o *OrmModel) WithAsc(fields ...string) *OrmModel
- func (o *OrmModel) WithContext(ctx context.Context) *OrmModel
- func (o *OrmModel) WithDB(db *sqlx.DB) *OrmModel
- func (o *OrmModel) WithDesc(fields ...string) *OrmModel
- type PageResult
- func DebugPAGE[T ORMInterface](entity T, debug bool, page, pageSize int, excludeTags []string, ...) (PageResult[T], error)
- func PAGE[T ORMInterface](entity T, page, pageSize int, excludeTags []string, cgs ...ConditionGroup) (PageResult[T], error)
- func Paginate[T any](q *SelectBuilder, page, pageSize int, dest *[]T) (PageResult[T], error)
- type SQLParams
- type SelectBuilder
- func (b *SelectBuilder) Asc(jsonTag ...string) *SelectBuilder
- func (b *SelectBuilder) Avg(column string) (float64, error)
- func (b *SelectBuilder) BuildSQL() SQLParams
- func (b *SelectBuilder) Clone() *SelectBuilder
- func (b *SelectBuilder) Count(column string) (int64, error)
- func (b *SelectBuilder) Desc(jsonTag ...string) *SelectBuilder
- func (b *SelectBuilder) Error() error
- func (b *SelectBuilder) ExcludeFields(jsonTag ...string) *SelectBuilder
- func (b *SelectBuilder) Fields(jsonTag ...string) *SelectBuilder
- func (b *SelectBuilder) ForUpdate(mode ...string) *SelectBuilder
- func (b *SelectBuilder) FullSQL() SQLParams
- func (b *SelectBuilder) GroupBy(cgs ...ConditionGroup) *SelectBuilder
- func (b *SelectBuilder) Having(exp string, args ...any) *SelectBuilder
- func (b *SelectBuilder) If(ifFunc func(b *SelectBuilder)) *SelectBuilder
- func (b *SelectBuilder) IfWhen(cond bool, fn func(b *SelectBuilder)) *SelectBuilder
- func (b *SelectBuilder) Join(join *JoinTable) *SelectBuilder
- func (b *SelectBuilder) JsonbList(dest interface{}) error
- func (b *SelectBuilder) JsonbListString() (string, error)
- func (b *SelectBuilder) JsonbMap(dest interface{}, columns ...string) error
- func (b *SelectBuilder) JsonbMapString(keys ...string) (string, error)
- func (b *SelectBuilder) Limit(row int64) *SelectBuilder
- func (b *SelectBuilder) Log(l bool) *SelectBuilder
- func (b *SelectBuilder) Many(dest interface{}) error
- func (b *SelectBuilder) Max(column string) (float64, error)
- func (b *SelectBuilder) Min(column string) (float64, error)
- func (b *SelectBuilder) Model() *OrmModel
- func (b *SelectBuilder) Offset(row int64) *SelectBuilder
- func (b *SelectBuilder) One(dest interface{}) error
- func (b *SelectBuilder) Pluck(field string, dest interface{}) error
- func (b *SelectBuilder) Scan(dest ...interface{}) error
- func (b *SelectBuilder) Sum(column string) (float64, error)
- func (b *SelectBuilder) Tx(tx *sqlx.Tx) *SelectBuilder
- func (b *SelectBuilder) Where(cgs ...ConditionGroup) *SelectBuilder
- func (b *SelectBuilder) WhereIf(cond bool, cgs ...ConditionGroup) *SelectBuilder
- func (b *SelectBuilder) WherePK() *SelectBuilder
- func (b *SelectBuilder) With(t string) *SelectBuilder
- func (b *SelectBuilder) WithAsc(fields ...string) *SelectBuilder
- func (b *SelectBuilder) WithContext(ctx context.Context) *SelectBuilder
- func (b *SelectBuilder) WithDB(db *sqlx.DB) *SelectBuilder
- func (b *SelectBuilder) WithDesc(fields ...string) *SelectBuilder
- type UpdateBuilder
- func (b *UpdateBuilder) AllowEmpty(jsonTag ...string) *UpdateBuilder
- func (b *UpdateBuilder) AllowFullTable() *UpdateBuilder
- func (b *UpdateBuilder) BuildSQL() SQLParams
- func (b *UpdateBuilder) Clone() *UpdateBuilder
- func (b *UpdateBuilder) Error() error
- func (b *UpdateBuilder) ExcludeFields(jsonTag ...string) *UpdateBuilder
- func (b *UpdateBuilder) Exec() error
- func (b *UpdateBuilder) Fields(jsonTag ...string) *UpdateBuilder
- func (b *UpdateBuilder) FullSQL() SQLParams
- func (b *UpdateBuilder) If(ifFunc func(b *UpdateBuilder)) *UpdateBuilder
- func (b *UpdateBuilder) IfWhen(cond bool, fn func(b *UpdateBuilder)) *UpdateBuilder
- func (b *UpdateBuilder) IgnoreZeroRows(ignore ...bool) *UpdateBuilder
- func (b *UpdateBuilder) Log(l bool) *UpdateBuilder
- func (b *UpdateBuilder) Many(dest interface{}) error
- func (b *UpdateBuilder) Model() *OrmModel
- func (b *UpdateBuilder) One(dest interface{}) error
- func (b *UpdateBuilder) Returning(cols ...string) *UpdateBuilder
- func (b *UpdateBuilder) RowsAffected() int64
- func (b *UpdateBuilder) Scan(dest ...interface{}) error
- func (b *UpdateBuilder) SetExpression(jsonTag string, expr string, args ...any) *UpdateBuilder
- func (b *UpdateBuilder) SetField(jsonTag string, arg any) *UpdateBuilder
- func (b *UpdateBuilder) Tx(tx *sqlx.Tx) *UpdateBuilder
- func (b *UpdateBuilder) Where(cgs ...ConditionGroup) *UpdateBuilder
- func (b *UpdateBuilder) WhereIf(cond bool, cgs ...ConditionGroup) *UpdateBuilder
- func (b *UpdateBuilder) WherePK() *UpdateBuilder
- func (b *UpdateBuilder) WithContext(ctx context.Context) *UpdateBuilder
- func (b *UpdateBuilder) WithDB(db *sqlx.DB) *UpdateBuilder
Constants ¶
This section is empty.
Variables ¶
var ( // SqlxDB 数据库连接对象 SqlxDB *sqlx.DB // TagName 结构体 tag 名称 TagName = "db" DebugMode bool // ErrNoRowsAffected 影响行数为 0 的哨兵错误 ErrNoRowsAffected = errors.New("影响行数为0") // ErrFullTableOperation UPDATE/DELETE 最终没有任何 WHERE 条件时的拦截错误(防止条件被自动移除后误改/误删全表) // 确需全表操作时请显式调用 AllowFullTable() ErrFullTableOperation = errors.New("mworm: UPDATE/DELETE 缺少 WHERE 条件,已拦截全表操作") // SlowQueryThreshold 慢查询告警阈值,为 0 时不启用。例如可设置为 200 * time.Millisecond SlowQueryThreshold time.Duration // OnSlowQuery 慢查询触发时的回调函数。入参包括操作动作 (如 "Exec", "Many")、执行耗时、参数化 SQL(不含参数值,避免敏感数据落入日志)、外层调用代码位置 OnSlowQuery func(action string, cost time.Duration, sqlStr string, caller string) )
var ( ErrInvalidPageSize = &Error{Code: 1001, Message: "page size must be greater than zero"} ErrNilDB = &Error{Code: 1002, Message: "database connection is nil"} ErrEmptySQL = &Error{Code: 1003, Message: "SQL statement is empty"} ErrNoEffect = &Error{Code: 1004, Message: "no rows affected"} )
定义常见错误
Functions ¶
func ConvertArray ¶ added in v0.1.6
func ExecRawSQL ¶ added in v0.2.0
ExecRawSQL 执行原生 SQL,支持 ? 或 $N 占位符参数绑定
func JsonTagToJsonbKeys ¶ added in v0.3.7
func JsonbBuildObjString ¶ added in v0.2.8
func Transaction ¶ added in v0.4.5
Transaction 托管式事务执行器,自动管理 BeginTxx / Commit / Rollback (含 panic 保护) 支持上下文嵌套事务:当检测到 ctx 中已处于活跃事务中时,自动创建 PostgreSQL 原生 SAVEPOINT 保存点, 内层出错时局部回滚保存点,外层提交时全量提交。
func TransactionCtx ¶ added in v0.5.2
func TransactionCtx(ctx context.Context, fn func(ctx context.Context, tx *sqlx.Tx) error) (err error)
TransactionCtx 带 Context 上下文自动传播的托管式事务执行器 闭包函数直接接收已注入活跃事务的 ctx,下游业务调用 WithContext(ctx) 或内层再次调用 TransactionCtx(ctx, ...) 均可 100% 自动继承当前事务或保存点,实现全链路透明无感事务传播。
func TransactionWithOptions ¶ added in v0.5.2
func TransactionWithOptions(ctx context.Context, opts *dbsql.TxOptions, fn func(tx *sqlx.Tx) error) (err error)
TransactionWithOptions 指定隔离级别 / 只读等选项的托管式事务,如 &sql.TxOptions{Isolation: sql.LevelSerializable}
func TransactionWithOptionsCtx ¶ added in v0.5.2
func TransactionWithOptionsCtx(ctx context.Context, opts *dbsql.TxOptions, fn func(ctx context.Context, tx *sqlx.Tx) error) (err error)
TransactionWithOptionsCtx 指定选项且带 Context 事务自动传播的托管式事务
func TxFromContext ¶ added in v0.5.2
TxFromContext 从 context 中提取当前活跃的事务对象(若存在)
func ValueTypeToStr ¶ added in v0.3.3
Types ¶
type CRUDInterface ¶
type Client ¶ added in v0.4.5
type Client struct {
// contains filtered or unexported fields
}
Client 独立的 mworm 客户端实例,用于多数据库、读写分离或单元测试隔离
func (*Client) BulkInsert ¶ added in v0.4.5
func (c *Client) BulkInsert(slice any) *InsertBuilder
func (*Client) CopyFrom ¶ added in v0.5.2
func (c *Client) CopyFrom(slice any) *CopyBuilder
CopyFrom 使用 PostgreSQL 原生 Binary COPY 协议批量导入切片数据
func (*Client) DELETE ¶ added in v0.4.5
func (c *Client) DELETE(i ORMInterface) *DeleteBuilder
func (*Client) INSERT ¶ added in v0.4.5
func (c *Client) INSERT(i ORMInterface) *InsertBuilder
func (*Client) SELECT ¶ added in v0.4.5
func (c *Client) SELECT(i ORMInterface, distinct ...bool) *SelectBuilder
func (*Client) Transaction ¶ added in v0.4.5
func (*Client) TransactionCtx ¶ added in v0.5.2
func (c *Client) TransactionCtx(ctx context.Context, fn func(ctx context.Context, tx *sqlx.Tx) error) (err error)
TransactionCtx 带 Context 上下文自动传播的 Client 托管式事务执行器
func (*Client) TransactionWithOptions ¶ added in v0.5.2
func (c *Client) TransactionWithOptions(ctx context.Context, opts *dbsql.TxOptions, fn func(tx *sqlx.Tx) error) (err error)
TransactionWithOptions 指定隔离级别 / 只读等选项的托管式事务
func (*Client) TransactionWithOptionsCtx ¶ added in v0.5.2
func (c *Client) TransactionWithOptionsCtx(ctx context.Context, opts *dbsql.TxOptions, fn func(ctx context.Context, tx *sqlx.Tx) error) (err error)
TransactionWithOptionsCtx 指定选项且带 Context 事务自动传播的 Client 托管式事务
func (*Client) UPDATE ¶ added in v0.4.5
func (c *Client) UPDATE(i ORMInterface) *UpdateBuilder
type ConditionGroup ¶
type ConditionGroup struct {
Logic string // Logic: 逻辑运算符(AND/OR)
Symbol string // Symbol: 比较符号(=, >, < 等)
JsonTags []string // JsonTags: 参与条件的字段名
Args []any // Args: 参数值
InArgs []string // InArgs: IN 查询参数
Express string // Express: 表达式
SubGroups []ConditionGroup // SubGroups: 子条件分组(用于嵌套 OR/AND)
// contains filtered or unexported fields
}
ConditionGroup 条件分组结构体,描述 SQL 查询的条件
func AndGroup ¶ added in v0.4.3
func AndGroup(cgs ...ConditionGroup) ConditionGroup
AndGroup 构造 AND 嵌套分组,如 AndGroup(Gt("a",1), Lt("b",10)) → (a>1 AND b<10)
func AnyEquals ¶ added in v0.4.7
func AnyEquals(tag string, slice any) ConditionGroup
AnyEquals 构造 column = ANY(?) 条件,PostgreSQL 官方推荐的高性能替代 IN (?) 方案(单参数绑定)
func ArrayAny ¶ added in v0.4.4
func ArrayAny(tag string, arg any) ConditionGroup
ArrayAny 构造 ? = ANY(column) 条件分组,检查指定值是否属于数据库数组字段
func ArrayContains ¶ added in v0.4.7
func ArrayContains(tag string, arg any) ConditionGroup
ArrayContains 构造 PostgreSQL 数组包含条件 (column @> ?)
func ArrayOverlap ¶ added in v0.4.4
func ArrayOverlap(tag string, arg any) ConditionGroup
ArrayOverlap 构造 PostgreSQL 数组相交重叠条件 (column && ?)
func ArrayOverlaps ¶ added in v0.4.7
func ArrayOverlaps(tag string, arg any) ConditionGroup
ArrayOverlaps ArrayOverlap 的别名
func Between ¶ added in v0.4.3
func Between(tag string, min, max any) ConditionGroup
Between 构造 BETWEEN 范围查询条件分组,如 Between("age", 18, 60) → age BETWEEN 18 AND 60
func Exists ¶ added in v0.4.3
func Exists(sql string, args ...any) ConditionGroup
Exists 构造 EXISTS 子查询条件,sql 为完整的子查询语句
func Exp ¶
func Exp(express string, args ...any) ConditionGroup
Exp 条件表达式 {table_column_field}=:{name}
func Fields ¶ added in v0.3.39
func Fields(tag ...string) ConditionGroup
func ILike ¶ added in v0.4.4
func ILike(tag string, args ...any) ConditionGroup
ILike 构造 PostgreSQL 大小写不敏感模糊匹配条件 (column ILIKE ?) 支持两种用法: 1. 直接指定参数:ILike("name", "%茅台%") 或 ILike("code", "600%") 2. 结构体自动取值:ILike("name"),自动从 Model.Name 中取值并前后添加 "%"
func JoinOn ¶ added in v0.3.8
func JoinOn(express string) ConditionGroup
JoinOn 创建 JOIN ON 条件 (实际上是 Raw 的别名,为了语义更清晰)
func JsonContainedBy ¶ added in v0.4.7
func JsonContainedBy(tag string, jsonValue any) ConditionGroup
JsonContainedBy 构造 PostgreSQL JSONB 被包含条件 (column <@ ?)。
func JsonContains ¶ added in v0.4.7
func JsonContains(tag string, jsonValue any) ConditionGroup
JsonContains 构造 PostgreSQL JSONB 包含条件 (column @> ?)。 支持传入 string, []byte, 或结构体/map/切片(非字符串类型将自动序列化为 JSON 字符串)。
func JsonPath ¶ added in v0.4.7
func JsonPath(tag string, path string, op string, val any) ConditionGroup
JsonPath 构造 PostgreSQL JSONB 路径查询条件,生成: column#>>'{path}' op ? 例如: JsonPath("payload", "user,id", "=", 1001) 生成: payload#>>'{user,id}' = ?
func JsonbContainedBy ¶ added in v0.4.7
func JsonbContainedBy(tag string, arg any) ConditionGroup
JsonbContainedBy 构造 JSONB <@ 条件分组
func JsonbContains ¶ added in v0.4.4
func JsonbContains(tag string, arg any) ConditionGroup
JsonbContains 构造 JSONB @> 条件分组
func JsonbHasAllKeys ¶ added in v0.4.4
func JsonbHasAllKeys(tag string, keys any) ConditionGroup
JsonbHasAllKeys 构造 PostgreSQL JSONB 存在所有键条件: jsonb_exists_all(column, ?)
func JsonbHasAnyKeys ¶ added in v0.4.4
func JsonbHasAnyKeys(tag string, keys any) ConditionGroup
JsonbHasAnyKeys 构造 PostgreSQL JSONB 存在任一键条件: jsonb_exists_any(column, ?)
func JsonbHasKey ¶ added in v0.4.4
func JsonbHasKey(tag string, key string) ConditionGroup
JsonbHasKey 构造 PostgreSQL JSONB 存在顶级键条件: jsonb_exists(column, ?)
func NEqLike ¶ added in v0.3.25
func NEqLike(tag ...string) ConditionGroup
NEqLike 构造 AND LIKE != 条件分组
func NotExists ¶ added in v0.4.3
func NotExists(sql string, args ...any) ConditionGroup
NotExists 构造 NOT EXISTS 子查询条件
func NotILike ¶ added in v0.4.7
func NotILike(tag string, args ...any) ConditionGroup
NotILike 构造 PostgreSQL 大小写不敏感不匹配条件 (column NOT ILIKE ?)
func NotIN ¶ added in v0.4.3
func NotIN[T any](tag string, args ...T) ConditionGroup
NotIN 构造 NOT IN 查询条件分组
func OrGroup ¶ added in v0.4.3
func OrGroup(cgs ...ConditionGroup) ConditionGroup
OrGroup 构造 OR 嵌套分组,如 OrGroup(Eq("a",1), Eq("b",2)) → (a=1 OR b=2)
func PgOp ¶ added in v0.4.4
func PgOp(tag string, op string, args ...any) ConditionGroup
PgOp 构造 PostgreSQL 特定的运算符条件,例如 PgOp("tags", "@>", `["go"]`)
func Raw ¶ added in v0.3.15
func Raw(express string, args ...any) ConditionGroup
Raw 条件表达式 column1 = 2 AND column2 = 'abc' 或 column1 = $1 AND column2 = $2
func SubQuery ¶ added in v0.4.3
func SubQuery(tag, symbol, sql string, args ...any) ConditionGroup
SubQuery 构造 WHERE 子查询条件,如 SubQuery("id", "IN", "SELECT user_id FROM orders WHERE amount > $1", 100)
func (ConditionGroup) Transform ¶
func (cg ConditionGroup) Transform() string
Transform 转换为 SQL 字符串(未实现)
type ConditionType ¶ added in v0.3.1
type ConditionType int // ConditionType 条件类型枚举
type CopyBuilder ¶ added in v0.5.2
type CopyBuilder struct {
// contains filtered or unexported fields
}
CopyBuilder 专职 PostgreSQL 原生 Binary Copy 协议的流式批量入库构建器 利用底层 pgx 原生二进制 Copy 协议,完全绕过 SQL 语法解析器与参数构造开销, 适用于分时、K 线、资金流等大批量纯追加写入;需要冲突更新时请使用 BulkInsert().Upsert()。
func CopyFrom ¶ added in v0.5.2
func CopyFrom(slice any) *CopyBuilder
CopyFrom 使用 PostgreSQL 原生 Binary COPY 协议批量导入切片数据 适用于分时、K 线、资金流等大批量纯追加写入;需要冲突更新时请使用 BulkInsert().Upsert()。
func (*CopyBuilder) ExcludeFields ¶ added in v0.5.2
func (b *CopyBuilder) ExcludeFields(jsonTags ...string) *CopyBuilder
ExcludeFields 排除不导入的列(传入 json tag,如自增主键 id)
func (*CopyBuilder) Exec ¶ added in v0.5.2
func (b *CopyBuilder) Exec() (int64, error)
Exec 执行流式 Binary Copy 批量入库,返回实际写入行数
func (*CopyBuilder) Fields ¶ added in v0.5.2
func (b *CopyBuilder) Fields(jsonTags ...string) *CopyBuilder
Fields 显式指定导入的列(传入 json tag)
func (*CopyBuilder) Table ¶ added in v0.5.2
func (b *CopyBuilder) Table(name string) *CopyBuilder
Table 显式指定目标表名(若不指定,自动提取切片元素的 TableName() 或结构体名)
func (*CopyBuilder) Tx ¶ added in v0.5.2
func (b *CopyBuilder) Tx(tx *sqlx.Tx) *CopyBuilder
Tx 绑定现有事务(若在事务中,COPY 操作将在同一事务连接中执行,支持回滚与提交)
func (*CopyBuilder) WithContext ¶ added in v0.5.2
func (b *CopyBuilder) WithContext(ctx context.Context) *CopyBuilder
WithContext 绑定上下文(支持超时取消与上下文事务自动继承)
func (*CopyBuilder) WithDB ¶ added in v0.5.2
func (b *CopyBuilder) WithDB(db *sqlx.DB) *CopyBuilder
WithDB 绑定指定数据库连接池
type DeleteBuilder ¶ added in v0.5.2
type DeleteBuilder struct {
// contains filtered or unexported fields
}
DeleteBuilder 专职 DELETE 删除的强类型构建器
func (*DeleteBuilder) AllowFullTable ¶ added in v0.5.2
func (b *DeleteBuilder) AllowFullTable() *DeleteBuilder
func (*DeleteBuilder) BuildSQL ¶ added in v0.5.2
func (b *DeleteBuilder) BuildSQL() SQLParams
func (*DeleteBuilder) Clone ¶ added in v0.5.2
func (b *DeleteBuilder) Clone() *DeleteBuilder
func (*DeleteBuilder) Error ¶ added in v0.5.2
func (b *DeleteBuilder) Error() error
func (*DeleteBuilder) Exec ¶ added in v0.5.2
func (b *DeleteBuilder) Exec() error
func (*DeleteBuilder) FullSQL ¶ added in v0.5.2
func (b *DeleteBuilder) FullSQL() SQLParams
func (*DeleteBuilder) If ¶ added in v0.5.2
func (b *DeleteBuilder) If(ifFunc func(b *DeleteBuilder)) *DeleteBuilder
func (*DeleteBuilder) IfWhen ¶ added in v0.5.2
func (b *DeleteBuilder) IfWhen(cond bool, fn func(b *DeleteBuilder)) *DeleteBuilder
func (*DeleteBuilder) IgnoreZeroRows ¶ added in v0.5.2
func (b *DeleteBuilder) IgnoreZeroRows(ignore ...bool) *DeleteBuilder
func (*DeleteBuilder) Log ¶ added in v0.5.2
func (b *DeleteBuilder) Log(l bool) *DeleteBuilder
func (*DeleteBuilder) Many ¶ added in v0.5.2
func (b *DeleteBuilder) Many(dest interface{}) error
func (*DeleteBuilder) Model ¶ added in v0.5.2
func (b *DeleteBuilder) Model() *OrmModel
func (*DeleteBuilder) One ¶ added in v0.5.2
func (b *DeleteBuilder) One(dest interface{}) error
func (*DeleteBuilder) Returning ¶ added in v0.5.2
func (b *DeleteBuilder) Returning(cols ...string) *DeleteBuilder
func (*DeleteBuilder) RowsAffected ¶ added in v0.5.2
func (b *DeleteBuilder) RowsAffected() int64
func (*DeleteBuilder) Scan ¶ added in v0.5.2
func (b *DeleteBuilder) Scan(dest ...interface{}) error
func (*DeleteBuilder) Tx ¶ added in v0.5.2
func (b *DeleteBuilder) Tx(tx *sqlx.Tx) *DeleteBuilder
func (*DeleteBuilder) Where ¶ added in v0.5.2
func (b *DeleteBuilder) Where(cgs ...ConditionGroup) *DeleteBuilder
func (*DeleteBuilder) WhereIf ¶ added in v0.5.2
func (b *DeleteBuilder) WhereIf(cond bool, cgs ...ConditionGroup) *DeleteBuilder
func (*DeleteBuilder) WherePK ¶ added in v0.5.2
func (b *DeleteBuilder) WherePK() *DeleteBuilder
func (*DeleteBuilder) WithContext ¶ added in v0.5.2
func (b *DeleteBuilder) WithContext(ctx context.Context) *DeleteBuilder
func (*DeleteBuilder) WithDB ¶ added in v0.5.2
func (b *DeleteBuilder) WithDB(db *sqlx.DB) *DeleteBuilder
type InsertBuilder ¶ added in v0.5.2
type InsertBuilder struct {
// contains filtered or unexported fields
}
InsertBuilder 专职 INSERT 与 BulkInsert 的强类型构建器
func BulkInsert ¶ added in v0.4.5
func BulkInsert(slice interface{}) *InsertBuilder
BulkInsert 批量插入,slice 为 []T(T 须实现 ORMInterface) 生成单条 INSERT INTO ... VALUES (...),(...),... SQL,N 行仅 1 次数据库往返 支持链式调用 .Upsert() / .DoNothing() / .OnConflict().DoUpdate() / .Exec() 零值字段:BulkInsert 对所有行全列写入(与单行 INSERT 的零值跳过行为不同) 若需排除某列,请在调用前用 ExcludeFields("jsonTag") 指定
func (*InsertBuilder) AllowEmpty ¶ added in v0.5.2
func (b *InsertBuilder) AllowEmpty(jsonTag ...string) *InsertBuilder
func (*InsertBuilder) BuildSQL ¶ added in v0.5.2
func (b *InsertBuilder) BuildSQL() SQLParams
func (*InsertBuilder) Chunk ¶ added in v0.5.2
func (b *InsertBuilder) Chunk(size int) *InsertBuilder
func (*InsertBuilder) Clone ¶ added in v0.5.2
func (b *InsertBuilder) Clone() *InsertBuilder
func (*InsertBuilder) DoNothing ¶ added in v0.5.2
func (b *InsertBuilder) DoNothing() *InsertBuilder
func (*InsertBuilder) DoUpdate ¶ added in v0.5.2
func (b *InsertBuilder) DoUpdate(jsonTags ...string) *InsertBuilder
func (*InsertBuilder) Error ¶ added in v0.5.2
func (b *InsertBuilder) Error() error
func (*InsertBuilder) ExcludeFields ¶ added in v0.5.2
func (b *InsertBuilder) ExcludeFields(jsonTag ...string) *InsertBuilder
func (*InsertBuilder) Exec ¶ added in v0.5.2
func (b *InsertBuilder) Exec() error
func (*InsertBuilder) Fields ¶ added in v0.5.2
func (b *InsertBuilder) Fields(jsonTag ...string) *InsertBuilder
func (*InsertBuilder) FullSQL ¶ added in v0.5.2
func (b *InsertBuilder) FullSQL() SQLParams
func (*InsertBuilder) If ¶ added in v0.5.2
func (b *InsertBuilder) If(ifFunc func(b *InsertBuilder)) *InsertBuilder
func (*InsertBuilder) IfWhen ¶ added in v0.5.2
func (b *InsertBuilder) IfWhen(cond bool, fn func(b *InsertBuilder)) *InsertBuilder
func (*InsertBuilder) IgnoreZeroRows ¶ added in v0.5.2
func (b *InsertBuilder) IgnoreZeroRows(ignore ...bool) *InsertBuilder
func (*InsertBuilder) Log ¶ added in v0.5.2
func (b *InsertBuilder) Log(l bool) *InsertBuilder
func (*InsertBuilder) Many ¶ added in v0.5.2
func (b *InsertBuilder) Many(dest interface{}) error
func (*InsertBuilder) Model ¶ added in v0.5.2
func (b *InsertBuilder) Model() *OrmModel
func (*InsertBuilder) OnConflict ¶ added in v0.5.2
func (b *InsertBuilder) OnConflict(jsonTags ...string) *InsertBuilder
func (*InsertBuilder) One ¶ added in v0.5.2
func (b *InsertBuilder) One(dest interface{}) error
func (*InsertBuilder) Returning ¶ added in v0.5.2
func (b *InsertBuilder) Returning(cols ...string) *InsertBuilder
func (*InsertBuilder) RowsAffected ¶ added in v0.5.2
func (b *InsertBuilder) RowsAffected() int64
func (*InsertBuilder) Scan ¶ added in v0.5.2
func (b *InsertBuilder) Scan(dest ...interface{}) error
func (*InsertBuilder) Tx ¶ added in v0.5.2
func (b *InsertBuilder) Tx(tx *sqlx.Tx) *InsertBuilder
func (*InsertBuilder) Upsert ¶ added in v0.5.2
func (b *InsertBuilder) Upsert(conflictJsonTags ...string) *InsertBuilder
func (*InsertBuilder) WithContext ¶ added in v0.5.2
func (b *InsertBuilder) WithContext(ctx context.Context) *InsertBuilder
func (*InsertBuilder) WithDB ¶ added in v0.5.2
func (b *InsertBuilder) WithDB(db *sqlx.DB) *InsertBuilder
type JoinTable ¶ added in v0.3.8
type JoinTable struct {
Type JoinType // JOIN 类型
Table string // 表名
Alias string // 表别名
Conditions []ConditionGroup // JOIN 条件
SelectField []string // 需要查询的字段
}
JoinTable 连接表的结构
func INNER_JOIN ¶ added in v0.4.0
func INNER_JOIN(i ORMInterface, alias string) *JoinTable
INNER_JOIN 通过 ORMInterface 创建 INNER JOIN
func LEFT_JOIN ¶ added in v0.4.0
func LEFT_JOIN(i ORMInterface, alias string) *JoinTable
LEFT_JOIN 通过 ORMInterface 创建 LEFT JOIN
func RIGHT_JOIN ¶ added in v0.4.0
func RIGHT_JOIN(i ORMInterface, alias string) *JoinTable
RIGHT_JOIN 通过 ORMInterface 创建 RIGHT JOIN
func (*JoinTable) On ¶ added in v0.4.0
func (j *JoinTable) On(cgs ...ConditionGroup) *JoinTable
On 添加连接条件 推荐使用 mworm.Raw("t.id = a.user_id") 或 mworm.JoinOn("t.id = a.user_id")
type ORMInterface ¶
type ORMInterface interface {
TableName() string
}
ORMInterface 数据库表结构体接口,需实现 TableName 方法 CRUDInterface 数据库操作接口,需实现 CRUDMode 方法
type OrmModel ¶
type OrmModel struct {
// contains filtered or unexported fields
}
func (*OrmModel) AllowEmpty ¶ added in v0.3.12
func (*OrmModel) AllowFullTable ¶ added in v0.5.2
AllowFullTable 显式允许无 WHERE 条件的 UPDATE/DELETE(默认拦截并返回 ErrFullTableOperation)
func (*OrmModel) Chunk ¶ added in v0.4.7
Chunk 设置 BulkInsert 批量插入时的单批行数。 当待插入数据行数超过该值时,自动按批次分段执行,防止触发单条 SQL 绑定参数过多限制(如 PostgreSQL 65535 参数限制)。 若当前未处于事务中,自动开启独立事务执行各批次,保证全量写入的原子性。
func (*OrmModel) Delete ¶
func (o *OrmModel) Delete(i interface{}) *DeleteBuilder
func (*OrmModel) ExcludeFields ¶ added in v0.1.17
func (*OrmModel) ForUpdate ¶ added in v0.5.2
ForUpdate 为 SELECT 追加行级锁子句(须在事务中配合 .Tx(tx) 使用) mode 可选 "NOWAIT" 或 "SKIP LOCKED"(大小写不敏感),其他取值返回错误
func (*OrmModel) GroupBy ¶ added in v0.3.39
func (o *OrmModel) GroupBy(cgs ...ConditionGroup) *OrmModel
GroupBy 分组查询:Fields(...) 指定分组字段,Raw(expr, args...) 追加聚合表达式(支持 $N / ? 参数绑定)
func (*OrmModel) Having ¶ added in v0.3.39
Having 分组过滤条件,支持 $N / ? 参数绑定,如 Having("count(*) > $1", 2)
func (*OrmModel) IgnoreZeroRows ¶ added in v0.4.5
IgnoreZeroRows 设置当影响行数为 0 时是否忽略错误(不抛出 ErrNoRowsAffected)
func (*OrmModel) Insert ¶
func (o *OrmModel) Insert(i interface{}) *InsertBuilder
func (*OrmModel) JsonbListString ¶
func (*OrmModel) Many ¶ added in v0.1.18
Many 查询多条记录,或执行带 RETURNING 的批量操作并将结果映射为切片(结果追加到 dest 末尾)。 任一行扫描/类型绑定失败或遍历中断(rows.Err)都会返回错误,不会静默丢行。
func (*OrmModel) OnConflict ¶ added in v0.4.3
OnConflict 指定 Upsert 冲突列(json tag),用于 INSERT ON CONFLICT
func (*OrmModel) One ¶ added in v0.1.18
One 查询单条记录,或执行带 RETURNING 的 INSERT/UPDATE/DELETE 并将返回行映射到目标结构体。 无记录时返回 sql.ErrNoRows。
func (*OrmModel) Pluck ¶ added in v0.5.2
Pluck 查询指定单列并将结果提取为切片(如 &[]string, &[]int64, &[]float64 等)。 自动强制限定 SELECT 仅投影该列,彻底杜绝大宽表 SELECT * 带来的 IO 与无用字段反序列化开销。 字段名支持 json tag 或物理列名。
func (*OrmModel) Returning ¶ added in v0.4.7
Returning 指定 PostgreSQL DML (INSERT/UPDATE/DELETE) 操作的 RETURNING 子句。 支持指定字段(json tag 或列名,如 Returning("id", "createdAt")),或不传参/传入 "*" 返回所有列(RETURNING *)。 链式调用后可接 .Scan(&id) 直接提取单列,或 .One(&model) / .Many(&slice) 直接映射为结构体。
func (*OrmModel) RowsAffected ¶ added in v0.4.5
RowsAffected 返回最近一次 Exec 执行所影响的行数
func (*OrmModel) Scan ¶ added in v0.4.7
Scan 执行当前带 RETURNING 的写操作或自定义查询,并将单行首个或多个指定字段扫描到目标指针变量中(如 &id, &status)
func (*OrmModel) Select ¶
func (o *OrmModel) Select(i interface{}, distinct ...bool) *SelectBuilder
func (*OrmModel) SetExpression ¶ added in v0.4.4
SetExpression UPDATE 使用自定义表达式设置字段值,支持 $N / ? 参数绑定 如: SetExpression("score", "score - $1", 38) 或 SetExpression("data", "jsonb_set(data, '{key}', $1)", `"v"`)
func (*OrmModel) Update ¶
func (o *OrmModel) Update(i interface{}) *UpdateBuilder
func (*OrmModel) Upsert ¶ added in v0.4.4
Upsert 极简版的 ON CONFLICT DO UPDATE 指定冲突列(通常是主键或唯一索引的 json tag),自动将其他字段组合为 EXCLUDED.xxx 进行更新。 单行 INSERT 仅更新本次实际写入的列(零值被跳过的列不会被默认值覆盖);BulkInsert 更新所有写入列。
func (*OrmModel) Where ¶
func (o *OrmModel) Where(cgs ...ConditionGroup) *OrmModel
func (*OrmModel) WhereIf ¶ added in v0.5.2
func (o *OrmModel) WhereIf(cond bool, cgs ...ConditionGroup) *OrmModel
WhereIf 根据布尔条件判断是否追加查询条件。当 cond 为 true 时追加 cgs,为 false 时直接忽略,支持链式流式组装
func (*OrmModel) WherePK ¶
WherePK 使用dbTag里包含pk字符的jsonTag的字段进行查询。 db:"columnName,pk" 任一主键值为空(零值/空串)即返回 ErrFullTableOperation,防止复合主键退化为残缺 WHERE 误操作多行
func (*OrmModel) WithContext ¶ added in v0.4.5
WithContext 关联上下文,支持超时取消与跨服务链路传递
type PageResult ¶ added in v0.3.1
type PageResult[T any] struct { Total int `json:"total" db:"total"` //总记录数 TotalPage int `json:"totalPage" db:"total_page"` //总页数 Page int `json:"page" db:"page"` //当前页 PageSize int `json:"pageSize" db:"page_size"` //页面数量 List []T `json:"list" db:"list"` //分页数据 }
PageResult 用于分页查询结果的结构体,包含总数、总页数、当前页、每页数量和数据列表。
func DebugPAGE ¶ added in v0.3.3
func DebugPAGE[T ORMInterface](entity T, debug bool, page, pageSize int, excludeTags []string, cgs ...ConditionGroup) (PageResult[T], error)
DebugPAGE 分页查询方法,支持调试和排除指定的json tag字段
func PAGE ¶ added in v0.3.1
func PAGE[T ORMInterface](entity T, page, pageSize int, excludeTags []string, cgs ...ConditionGroup) (PageResult[T], error)
PAGE 分页查询方法,支持排除指定的json tag字段
func Paginate ¶ added in v0.4.5
func Paginate[T any](q *SelectBuilder, page, pageSize int, dest *[]T) (PageResult[T], error)
Paginate 基于 SELECT 构建器执行分页查询(仅接收 *SelectBuilder,非查询动词在编译期即被拒绝) 天然继承并复用 Where, Asc, Desc, WithContext, Tx, WithDB, ExcludeFields 等所有设置
func (PageResult[T]) CalcTotalPage ¶ added in v0.3.1
func (pr PageResult[T]) CalcTotalPage() int
CalcTotalPage 计算总页数
func (PageResult[T]) HasNext ¶ added in v0.4.5
func (pr PageResult[T]) HasNext() bool
HasNext 是否有下一页
func (PageResult[T]) HasPrev ¶ added in v0.4.5
func (pr PageResult[T]) HasPrev() bool
HasPrev 是否有上一页
type SQLParams ¶ added in v0.3.11
type SQLParams struct {
Sql string // 含占位符 ? 的 SQL(配合 Args 使用)
WithSql string
Params map[string]interface{}
Args []any
Err error
}
type SelectBuilder ¶ added in v0.5.2
type SelectBuilder struct {
// contains filtered or unexported fields
}
SelectBuilder 专职 SELECT 查询的强类型构建器
func (*SelectBuilder) Asc ¶ added in v0.5.2
func (b *SelectBuilder) Asc(jsonTag ...string) *SelectBuilder
func (*SelectBuilder) Avg ¶ added in v0.5.2
func (b *SelectBuilder) Avg(column string) (float64, error)
func (*SelectBuilder) BuildSQL ¶ added in v0.5.2
func (b *SelectBuilder) BuildSQL() SQLParams
func (*SelectBuilder) Clone ¶ added in v0.5.2
func (b *SelectBuilder) Clone() *SelectBuilder
func (*SelectBuilder) Count ¶ added in v0.5.2
func (b *SelectBuilder) Count(column string) (int64, error)
func (*SelectBuilder) Desc ¶ added in v0.5.2
func (b *SelectBuilder) Desc(jsonTag ...string) *SelectBuilder
func (*SelectBuilder) Error ¶ added in v0.5.2
func (b *SelectBuilder) Error() error
func (*SelectBuilder) ExcludeFields ¶ added in v0.5.2
func (b *SelectBuilder) ExcludeFields(jsonTag ...string) *SelectBuilder
func (*SelectBuilder) Fields ¶ added in v0.5.2
func (b *SelectBuilder) Fields(jsonTag ...string) *SelectBuilder
func (*SelectBuilder) ForUpdate ¶ added in v0.5.2
func (b *SelectBuilder) ForUpdate(mode ...string) *SelectBuilder
func (*SelectBuilder) FullSQL ¶ added in v0.5.2
func (b *SelectBuilder) FullSQL() SQLParams
func (*SelectBuilder) GroupBy ¶ added in v0.5.2
func (b *SelectBuilder) GroupBy(cgs ...ConditionGroup) *SelectBuilder
func (*SelectBuilder) Having ¶ added in v0.5.2
func (b *SelectBuilder) Having(exp string, args ...any) *SelectBuilder
func (*SelectBuilder) If ¶ added in v0.5.2
func (b *SelectBuilder) If(ifFunc func(b *SelectBuilder)) *SelectBuilder
func (*SelectBuilder) IfWhen ¶ added in v0.5.2
func (b *SelectBuilder) IfWhen(cond bool, fn func(b *SelectBuilder)) *SelectBuilder
func (*SelectBuilder) Join ¶ added in v0.5.2
func (b *SelectBuilder) Join(join *JoinTable) *SelectBuilder
func (*SelectBuilder) JsonbList ¶ added in v0.5.2
func (b *SelectBuilder) JsonbList(dest interface{}) error
func (*SelectBuilder) JsonbListString ¶ added in v0.5.2
func (b *SelectBuilder) JsonbListString() (string, error)
func (*SelectBuilder) JsonbMap ¶ added in v0.5.2
func (b *SelectBuilder) JsonbMap(dest interface{}, columns ...string) error
func (*SelectBuilder) JsonbMapString ¶ added in v0.5.2
func (b *SelectBuilder) JsonbMapString(keys ...string) (string, error)
func (*SelectBuilder) Limit ¶ added in v0.5.2
func (b *SelectBuilder) Limit(row int64) *SelectBuilder
func (*SelectBuilder) Log ¶ added in v0.5.2
func (b *SelectBuilder) Log(l bool) *SelectBuilder
func (*SelectBuilder) Many ¶ added in v0.5.2
func (b *SelectBuilder) Many(dest interface{}) error
func (*SelectBuilder) Max ¶ added in v0.5.2
func (b *SelectBuilder) Max(column string) (float64, error)
func (*SelectBuilder) Min ¶ added in v0.5.2
func (b *SelectBuilder) Min(column string) (float64, error)
func (*SelectBuilder) Model ¶ added in v0.5.2
func (b *SelectBuilder) Model() *OrmModel
func (*SelectBuilder) Offset ¶ added in v0.5.2
func (b *SelectBuilder) Offset(row int64) *SelectBuilder
func (*SelectBuilder) One ¶ added in v0.5.2
func (b *SelectBuilder) One(dest interface{}) error
func (*SelectBuilder) Pluck ¶ added in v0.5.2
func (b *SelectBuilder) Pluck(field string, dest interface{}) error
func (*SelectBuilder) Scan ¶ added in v0.5.2
func (b *SelectBuilder) Scan(dest ...interface{}) error
func (*SelectBuilder) Sum ¶ added in v0.5.2
func (b *SelectBuilder) Sum(column string) (float64, error)
func (*SelectBuilder) Tx ¶ added in v0.5.2
func (b *SelectBuilder) Tx(tx *sqlx.Tx) *SelectBuilder
func (*SelectBuilder) Where ¶ added in v0.5.2
func (b *SelectBuilder) Where(cgs ...ConditionGroup) *SelectBuilder
func (*SelectBuilder) WhereIf ¶ added in v0.5.2
func (b *SelectBuilder) WhereIf(cond bool, cgs ...ConditionGroup) *SelectBuilder
func (*SelectBuilder) WherePK ¶ added in v0.5.2
func (b *SelectBuilder) WherePK() *SelectBuilder
func (*SelectBuilder) With ¶ added in v0.5.2
func (b *SelectBuilder) With(t string) *SelectBuilder
func (*SelectBuilder) WithAsc ¶ added in v0.5.2
func (b *SelectBuilder) WithAsc(fields ...string) *SelectBuilder
func (*SelectBuilder) WithContext ¶ added in v0.5.2
func (b *SelectBuilder) WithContext(ctx context.Context) *SelectBuilder
func (*SelectBuilder) WithDB ¶ added in v0.5.2
func (b *SelectBuilder) WithDB(db *sqlx.DB) *SelectBuilder
func (*SelectBuilder) WithDesc ¶ added in v0.5.2
func (b *SelectBuilder) WithDesc(fields ...string) *SelectBuilder
type UpdateBuilder ¶ added in v0.5.2
type UpdateBuilder struct {
// contains filtered or unexported fields
}
UpdateBuilder 专职 UPDATE 更新的强类型构建器
func (*UpdateBuilder) AllowEmpty ¶ added in v0.5.2
func (b *UpdateBuilder) AllowEmpty(jsonTag ...string) *UpdateBuilder
func (*UpdateBuilder) AllowFullTable ¶ added in v0.5.2
func (b *UpdateBuilder) AllowFullTable() *UpdateBuilder
func (*UpdateBuilder) BuildSQL ¶ added in v0.5.2
func (b *UpdateBuilder) BuildSQL() SQLParams
func (*UpdateBuilder) Clone ¶ added in v0.5.2
func (b *UpdateBuilder) Clone() *UpdateBuilder
func (*UpdateBuilder) Error ¶ added in v0.5.2
func (b *UpdateBuilder) Error() error
func (*UpdateBuilder) ExcludeFields ¶ added in v0.5.2
func (b *UpdateBuilder) ExcludeFields(jsonTag ...string) *UpdateBuilder
func (*UpdateBuilder) Exec ¶ added in v0.5.2
func (b *UpdateBuilder) Exec() error
func (*UpdateBuilder) Fields ¶ added in v0.5.2
func (b *UpdateBuilder) Fields(jsonTag ...string) *UpdateBuilder
func (*UpdateBuilder) FullSQL ¶ added in v0.5.2
func (b *UpdateBuilder) FullSQL() SQLParams
func (*UpdateBuilder) If ¶ added in v0.5.2
func (b *UpdateBuilder) If(ifFunc func(b *UpdateBuilder)) *UpdateBuilder
func (*UpdateBuilder) IfWhen ¶ added in v0.5.2
func (b *UpdateBuilder) IfWhen(cond bool, fn func(b *UpdateBuilder)) *UpdateBuilder
func (*UpdateBuilder) IgnoreZeroRows ¶ added in v0.5.2
func (b *UpdateBuilder) IgnoreZeroRows(ignore ...bool) *UpdateBuilder
func (*UpdateBuilder) Log ¶ added in v0.5.2
func (b *UpdateBuilder) Log(l bool) *UpdateBuilder
func (*UpdateBuilder) Many ¶ added in v0.5.2
func (b *UpdateBuilder) Many(dest interface{}) error
func (*UpdateBuilder) Model ¶ added in v0.5.2
func (b *UpdateBuilder) Model() *OrmModel
func (*UpdateBuilder) One ¶ added in v0.5.2
func (b *UpdateBuilder) One(dest interface{}) error
func (*UpdateBuilder) Returning ¶ added in v0.5.2
func (b *UpdateBuilder) Returning(cols ...string) *UpdateBuilder
func (*UpdateBuilder) RowsAffected ¶ added in v0.5.2
func (b *UpdateBuilder) RowsAffected() int64
func (*UpdateBuilder) Scan ¶ added in v0.5.2
func (b *UpdateBuilder) Scan(dest ...interface{}) error
func (*UpdateBuilder) SetExpression ¶ added in v0.5.2
func (b *UpdateBuilder) SetExpression(jsonTag string, expr string, args ...any) *UpdateBuilder
func (*UpdateBuilder) SetField ¶ added in v0.5.2
func (b *UpdateBuilder) SetField(jsonTag string, arg any) *UpdateBuilder
func (*UpdateBuilder) Tx ¶ added in v0.5.2
func (b *UpdateBuilder) Tx(tx *sqlx.Tx) *UpdateBuilder
func (*UpdateBuilder) Where ¶ added in v0.5.2
func (b *UpdateBuilder) Where(cgs ...ConditionGroup) *UpdateBuilder
func (*UpdateBuilder) WhereIf ¶ added in v0.5.2
func (b *UpdateBuilder) WhereIf(cond bool, cgs ...ConditionGroup) *UpdateBuilder
func (*UpdateBuilder) WherePK ¶ added in v0.5.2
func (b *UpdateBuilder) WherePK() *UpdateBuilder
func (*UpdateBuilder) WithContext ¶ added in v0.5.2
func (b *UpdateBuilder) WithContext(ctx context.Context) *UpdateBuilder
func (*UpdateBuilder) WithDB ¶ added in v0.5.2
func (b *UpdateBuilder) WithDB(db *sqlx.DB) *UpdateBuilder