Documentation
¶
Index ¶
- type WrapFunc
- type WrappedDbClient
- func (c *WrappedDbClient) CreateTransaction() (tran sqlmer.TransactionKeeper, err error)
- func (c *WrappedDbClient) Dsn() string
- func (c *WrappedDbClient) Execute(sqlText string, args ...any) (rowsEffected int64, err error)
- func (c *WrappedDbClient) ExecuteContext(ctx context.Context, sqlText string, args ...any) (rowsEffected int64, err error)
- func (c *WrappedDbClient) Exists(sqlText string, args ...any) (ok bool, err error)
- func (c *WrappedDbClient) ExistsContext(ctx context.Context, sqlText string, args ...any) (ok bool, err error)
- func (c *WrappedDbClient) Get(sqlText string, args ...any) (mapRow map[string]any, err error)
- func (c *WrappedDbClient) GetConnTimeout() time.Duration
- func (c *WrappedDbClient) GetContext(ctx context.Context, sqlText string, args ...any) (mapRow map[string]any, err error)
- func (c *WrappedDbClient) GetExecTimeout() time.Duration
- func (c *WrappedDbClient) Row(sqlText string, args ...any) (row *sqlen.EnhanceRow, err error)
- func (c *WrappedDbClient) RowContext(context context.Context, sqlText string, args ...any) (row *sqlen.EnhanceRow, err error)
- func (c *WrappedDbClient) Rows(sqlText string, args ...any) (rows *sqlen.EnhanceRows, err error)
- func (c *WrappedDbClient) RowsContext(context context.Context, sqlText string, args ...any) (rows *sqlen.EnhanceRows, err error)
- func (c *WrappedDbClient) Scalar(sqlText string, args ...any) (cell any, hit bool, err error)
- func (c *WrappedDbClient) ScalarContext(ctx context.Context, sqlText string, args ...any) (cell any, hit bool, err error)
- func (c *WrappedDbClient) SizedExecute(expectedSize int64, sqlText string, args ...any) (err error)
- func (c *WrappedDbClient) SizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any) (err error)
- func (c *WrappedDbClient) SliceGet(sqlText string, args ...any) (mapRows []map[string]any, err error)
- func (c *WrappedDbClient) SliceGetContext(ctx context.Context, sqlText string, args ...any) (mapRows []map[string]any, err error)
- type WrappedTransactionKeeper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type WrapFunc ¶
WrapFunc 用于包裹 SQL 执行方法。 函数本身在执行 SQL 语句前执行,返回一个函数,在执行 SQL 语句后执行。 返回函数的 err 参数是 SQL 执行后返回的 error。
type WrappedDbClient ¶
type WrappedDbClient struct {
// contains filtered or unexported fields
}
WrappedDbClient 将包包裹 DbClient 的所有 SQL 执行方法,以注入慢日志/统计指标等能力。
func Extend ¶
func Extend(raw sqlmer.DbClient, execWrapFunc WrapFunc) *WrappedDbClient
Extend 加强 DbClient,在 DbClient 的数据库访问上,提供一层装饰器包裹,以注入慢日志/统计指标等能力。 params:
@raw 原始的 DbClient 实例。 @execWrapFunc 包裹函数,在执行 SQL 语句前执行,返回一个函数,在执行 SQL 语句后执行。返回函数的 err 参数是 SQL 执行后返回的 error。
returns:
@wrappedDbClient 返回一个被包裹上注入逻辑的 DbClient 实例。
注意:
- 事务是内部语句独立包裹,而不是一整个事务包裹;
- Rows 方法,在返回游标对象时包裹上下文即结束;
func (*WrappedDbClient) CreateTransaction ¶
func (c *WrappedDbClient) CreateTransaction() (tran sqlmer.TransactionKeeper, err error)
CreateTransaction 用于开始一个事务。 returns:
@tran 返回一个实现了 TransactionKeeper(内嵌 DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。 @err 创建事务时遇到的错误。
func (*WrappedDbClient) Dsn ¶
func (c *WrappedDbClient) Dsn() string
Dsn 用于获取当 Dsn 用于获取当前实例所使用的数据库连接字符串。
func (*WrappedDbClient) Execute ¶
func (c *WrappedDbClient) Execute(sqlText string, args ...any) (rowsEffected int64, err error)
Execute 用于执行非查询SQL语句,并返回所影响的行数。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@effectedRows 语句影响的行数。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) ExecuteContext ¶
func (c *WrappedDbClient) ExecuteContext(ctx context.Context, sqlText string, args ...any) (rowsEffected int64, err error)
ExecuteContext 用于执行非查询 sql 语句,并返回所影响的行数。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@effectedRows 语句影响的行数。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) Exists ¶
func (c *WrappedDbClient) Exists(sqlText string, args ...any) (ok bool, err error)
Exists 用于判断给定的查询的结果是否至少包含 1 行。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@ok 结果至少包含一行。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) ExistsContext ¶
func (c *WrappedDbClient) ExistsContext(ctx context.Context, sqlText string, args ...any) (ok bool, err error)
ExistsContext 用于判断给定的查询的结果是否至少包含 1 行。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@ok 结果至少包含一行。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) Get ¶
Get 用于获取查询结果的第一行记录。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRow 目标查询第一行的结果。 @err 执行语句时遇到的错误。注意,sql.ErrNoRows 不放 error 中返回,可知是否有数据可直接判断第一个返回值是否为 nil。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) GetConnTimeout ¶
func (c *WrappedDbClient) GetConnTimeout() time.Duration
GetConnTimeout 用于获取当前 DbClient 实例的获取连接的超时时间。
func (*WrappedDbClient) GetContext ¶
func (c *WrappedDbClient) GetContext(ctx context.Context, sqlText string, args ...any) (mapRow map[string]any, err error)
GetContext 用于获取查询结果的第一行记录。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRow 目标查询第一行的结果。 @err 执行语句时遇到的错误。注意,sql.ErrNoRows 不放 error 中返回,可知是否有数据可直接判断第一个返回值是否为 nil。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) GetExecTimeout ¶
func (c *WrappedDbClient) GetExecTimeout() time.Duration
GetExecTimeout 用于获取当前 DbClient 实例的执行超时时间。
func (*WrappedDbClient) Row ¶
func (c *WrappedDbClient) Row(sqlText string, args ...any) (row *sqlen.EnhanceRow, err error)
Row 用于获取单个查询结果行。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRow 对象(是对 sql.Row 的增强包装对象)。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) RowContext ¶
func (c *WrappedDbClient) RowContext(context context.Context, sqlText string, args ...any) (row *sqlen.EnhanceRow, err error)
RowContext 用于获取单个查询结果行。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRow 对象(是对 sql.Row 的增强包装对象)。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) Rows ¶
func (c *WrappedDbClient) Rows(sqlText string, args ...any) (rows *sqlen.EnhanceRows, err error)
Rows 用于获取查询结果行的游标对象。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRows 对象(是对 sql.Rows 的增强包装对象)。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) RowsContext ¶
func (c *WrappedDbClient) RowsContext(context context.Context, sqlText string, args ...any) (rows *sqlen.EnhanceRows, err error)
RowsContext 用于获取查询结果行的游标对象。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRows 对象(是对 sql.Rows 的增强包装对象)。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) Scalar ¶
Scalar 用于获取查询的第一行第一列的值。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@cell 目标查询第一行第一列的值。 @hit true 表明有命中数据,false 则为没有命中数据,可通过该值区分是否为数据库空值。 @err 执行语句时遇到的错误。注意,sql.ErrNoRows 不放 error 中返回,而通过第二个返回值区分。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) ScalarContext ¶
func (c *WrappedDbClient) ScalarContext(ctx context.Context, sqlText string, args ...any) (cell any, hit bool, err error)
ScalarContext 用于获取查询的第一行第一列的值。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@cell 目标查询第一行第一列的值。 @hit true 表明有命中数据,false 则为没有命中数据,可通过该值区分是否为数据库空值。 @err 执行语句时遇到的错误。注意,sql.ErrNoRows 不放 error 中返回,而通过第二个返回值区分。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) SizedExecute ¶
func (c *WrappedDbClient) SizedExecute(expectedSize int64, sqlText string, args ...any) (err error)
SizedExecute 用于执行非查询SQL语句,并断言所影响的行数。 params:
@expectedSize 预期的影响行数,当 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExpectedSizeWrong: 当没有影响到预期行数时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) SizedExecuteContext ¶
func (c *WrappedDbClient) SizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any) (err error)
SizedExecuteContext 用于执行非查询SQL语句,并断言所影响的行数。 params:
@ctx context。 @expectedSize 预期的影响行数,当 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExpectedSizeWrong: 当没有影响到预期行数时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) SliceGet ¶
func (c *WrappedDbClient) SliceGet(sqlText string, args ...any) (mapRows []map[string]any, err error)
SliceGet 用于获取查询结果的所有行。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRows 目标查询结果的所有行。 @err 执行语句时遇到的错误。注意,sql.ErrNoRows 不放 error 中返回,可知是否有数据可直接判断第一个返回值的 len。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*WrappedDbClient) SliceGetContext ¶
func (c *WrappedDbClient) SliceGetContext(ctx context.Context, sqlText string, args ...any) (mapRows []map[string]any, err error)
SliceGetContext 用于获取查询结果得行序列。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRows 目标查询结果的所有行。 @err 执行语句时遇到的错误。注意,sql.ErrNoRows 不放 error 中返回,可知是否有数据可直接判断第一个返回值的 len。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
type WrappedTransactionKeeper ¶
type WrappedTransactionKeeper struct {
sqlmer.DbClient // 内嵌 DbClient 实例。
// contains filtered or unexported fields
}
WrappedTransactionKeeper 将包包裹 TransactionKeeper 的所有执行方法,以提供慢日志等能力。
func (*WrappedTransactionKeeper) Close ¶
func (t *WrappedTransactionKeeper) Close() error
Close 用于优雅关闭事务,创建事务后可 defer 执行本方法。
func (*WrappedTransactionKeeper) Commit ¶
func (t *WrappedTransactionKeeper) Commit() error
Commit 用于提交事务。
func (*WrappedTransactionKeeper) Rollback ¶
func (t *WrappedTransactionKeeper) Rollback() error
Rollback 用于回滚事务。