Documentation
¶
Index ¶
- Variables
- type AbstractDbClient
- func (client *AbstractDbClient) CreateTransaction() (TransactionKeeper, error)
- func (client *AbstractDbClient) Dsn() string
- func (client *AbstractDbClient) Execute(sqlText string, args ...any) (int64, error)
- func (client *AbstractDbClient) ExecuteContext(ctx context.Context, sqlText string, args ...any) (int64, error)
- func (client *AbstractDbClient) Exists(sqlText string, args ...any) (bool, error)
- func (client *AbstractDbClient) ExistsContext(ctx context.Context, sqlText string, args ...any) (bool, error)
- func (client *AbstractDbClient) Get(sqlText string, args ...any) (map[string]any, error)
- func (client *AbstractDbClient) GetContext(ctx context.Context, sqlText string, args ...any) (map[string]any, error)
- func (client *AbstractDbClient) MustCreateTransaction() TransactionKeeper
- func (client *AbstractDbClient) MustExecute(sqlText string, args ...any) int64
- func (client *AbstractDbClient) MustExecuteContext(ctx context.Context, sqlText string, args ...any) int64
- func (client *AbstractDbClient) MustExists(sqlText string, args ...any) bool
- func (client *AbstractDbClient) MustExistsContext(ctx context.Context, sqlText string, args ...any) bool
- func (client *AbstractDbClient) MustGet(sqlText string, args ...any) map[string]any
- func (client *AbstractDbClient) MustGetContext(ctx context.Context, sqlText string, args ...any) map[string]any
- func (client *AbstractDbClient) MustRow(sqlText string, args ...any) *sqlen.EnhanceRow
- func (client *AbstractDbClient) MustRowContext(ctx context.Context, sqlText string, args ...any) *sqlen.EnhanceRow
- func (client *AbstractDbClient) MustRows(sqlText string, args ...any) *sqlen.EnhanceRows
- func (client *AbstractDbClient) MustRowsContext(ctx context.Context, sqlText string, args ...any) *sqlen.EnhanceRows
- func (client *AbstractDbClient) MustScalar(sqlText string, args ...any) (any, bool)
- func (client *AbstractDbClient) MustScalarContext(ctx context.Context, sqlText string, args ...any) (any, bool)
- func (client *AbstractDbClient) MustSizedExecute(expectedSize int64, sqlText string, args ...any)
- func (client *AbstractDbClient) MustSizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any)
- func (client *AbstractDbClient) MustSliceGet(sqlText string, args ...any) []map[string]any
- func (client *AbstractDbClient) MustSliceGetContext(ctx context.Context, sqlText string, args ...any) []map[string]any
- func (client *AbstractDbClient) Row(sqlText string, args ...any) (*sqlen.EnhanceRow, error)
- func (client *AbstractDbClient) RowContext(ctx context.Context, sqlText string, args ...any) (*sqlen.EnhanceRow, error)
- func (client *AbstractDbClient) Rows(sqlText string, args ...any) (*sqlen.EnhanceRows, error)
- func (client *AbstractDbClient) RowsContext(ctx context.Context, sqlText string, args ...any) (*sqlen.EnhanceRows, error)
- func (client *AbstractDbClient) Scalar(sqlText string, args ...any) (any, bool, error)
- func (client *AbstractDbClient) ScalarContext(ctx context.Context, sqlText string, args ...any) (any, bool, error)
- func (client *AbstractDbClient) SizedExecute(expectedSize int64, sqlText string, args ...any) error
- func (client *AbstractDbClient) SizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any) error
- func (client *AbstractDbClient) SliceGet(sqlText string, args ...any) ([]map[string]any, error)
- func (client *AbstractDbClient) SliceGetContext(ctx context.Context, sqlText string, args ...any) ([]map[string]any, error)
- type BindSqlArgsFunc
- type DbClient
- type DbClientConfig
- type DbClientOption
- func WithBindArgsFunc(argsFunc BindSqlArgsFunc) DbClientOption
- func WithConnTimeout(timeout time.Duration) DbClientOption
- func WithDb(db *sql.DB, driver string, dsn string) DbClientOption
- func WithDsn(driver string, dsn string) DbClientOption
- func WithExecTimeout(timeout time.Duration) DbClientOption
- func WithGetScanTypeFunc(scanFunc sqlen.GetScanTypeFunc) DbClientOption
- func WithPingCheck(withPingCheck bool) DbClientOption
- func WithUnifyDataTypeFunc(unifyDataType sqlen.UnifyDataTypeFn) DbClientOption
- type ErrorDbClient
- type ErrorTransactionKeeper
- type MustDbClient
- type MustTransactionKeeper
- type TransactionKeeper
Constants ¶
This section is empty.
Variables ¶
var ErrConnect = errors.New("dbConnect")
ErrConnect 是 DbClient 获取数据库连接时遇到的错误。
var ErrExecutingSql = errors.New("dbClient: failed to execute sql")
ErrExecutingSql 当执行 SQL 语句执行时遇到错误,返回该类型错误。
var ErrExpectedSizeWrong = errors.New("dbClient: effected rows was wrong")
ErrExpectedSizeWrong 当执行语句时候,没有影响到预期行数,返回该类型错误。
var ErrGetEffectedRows = errors.New("dbClient: the db driver do not support getting effected rows")
ErrGetEffectedRows 当数据库不支持获取影响行数时候,会返回改类型的错误。
var ErrParseParamFailed = errors.New("dbClient: failed to parse named params")
ErrSqlParamParse 解析 SQL 语句中的参数遇到错误时候,会返回该类型错误。
var ErrTran = errors.New("dbTrans")
ErrTran 是数据库执行事务操作遇到的错误。
Functions ¶
This section is empty.
Types ¶
type AbstractDbClient ¶ added in v1.2.0
type AbstractDbClient struct {
Db *sqlen.DbEnhance // 内部依赖的连接池。
Exer sqlen.EnhancedDbExer // 获取方法实际使用的执行对象。
// contains filtered or unexported fields
}
AbstractDbClient 是一个 DbClient 的抽象实现。
func NewAbstractDbClient ¶ added in v1.3.11
func NewAbstractDbClient(config *DbClientConfig) (*AbstractDbClient, error)
NewAbstractDbClient 用于获取一个 internalDbClient 对象。
func (*AbstractDbClient) CreateTransaction ¶ added in v1.2.0
func (client *AbstractDbClient) CreateTransaction() (TransactionKeeper, error)
CreateTransaction 用于开始一个事务。 returns:
@tran 返回一个实现了 TransactionKeeper(内嵌 DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。 @err 创建事务时遇到的错误。
func (*AbstractDbClient) Dsn ¶ added in v1.3.11
func (client *AbstractDbClient) Dsn() string
Dsn 用于获取当前实例所使用的数据库连接字符串。
func (*AbstractDbClient) Execute ¶ added in v1.2.0
func (client *AbstractDbClient) Execute(sqlText string, args ...any) (int64, error)
Execute 用于执行非查询SQL语句,并返回所影响的行数。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@effectedRows 语句影响的行数。 @err 执行语句时遇到的错误。
可以通过 errors.Is 判断的特殊 err:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
func (*AbstractDbClient) ExecuteContext ¶ added in v1.2.0
func (client *AbstractDbClient) ExecuteContext(ctx context.Context, sqlText string, args ...any) (int64, 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 (*AbstractDbClient) Exists ¶ added in v1.2.0
func (client *AbstractDbClient) Exists(sqlText string, args ...any) (bool, 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 (*AbstractDbClient) ExistsContext ¶ added in v1.2.0
func (client *AbstractDbClient) ExistsContext(ctx context.Context, sqlText string, args ...any) (bool, 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 (*AbstractDbClient) Get ¶ added in v1.2.0
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 (*AbstractDbClient) GetContext ¶ added in v1.2.0
func (client *AbstractDbClient) GetContext(ctx context.Context, sqlText string, args ...any) (map[string]any, 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 (*AbstractDbClient) MustCreateTransaction ¶ added in v1.2.0
func (client *AbstractDbClient) MustCreateTransaction() TransactionKeeper
MustCreateTransaction 用于开始一个事务。 returns:
@tran 返回一个实现了 TransactionKeeper(内嵌 DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。
func (*AbstractDbClient) MustExecute ¶ added in v1.2.0
func (client *AbstractDbClient) MustExecute(sqlText string, args ...any) int64
MustExecute 用于执行非查询 sql 语句,并返回所影响的行数。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@effectedRows 语句影响的行数。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustExecuteContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustExecuteContext(ctx context.Context, sqlText string, args ...any) int64
MustExecuteContext 用于执行非查询SQL语句,并返回所影响的行数。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@effectedRows 语句影响的行数。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustExists ¶ added in v1.2.0
func (client *AbstractDbClient) MustExists(sqlText string, args ...any) bool
MustExists 用于判断给定的查询的结果是否至少包含 1 行。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@ok 结果至少包含一行。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustExistsContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustExistsContext(ctx context.Context, sqlText string, args ...any) bool
MustExistsContext 用于判断给定的查询的结果是否至少包含 1 行。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@ok 结果至少包含一行。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustGet ¶ added in v1.2.0
func (client *AbstractDbClient) MustGet(sqlText string, args ...any) map[string]any
MustGet 用于获取查询结果的第一行记录。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRow 目标查询第一行的结果。
可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以判断返回值是否为 nil:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustGetContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustGetContext(ctx context.Context, sqlText string, args ...any) map[string]any
MustGetContext 用于获取查询结果的第一行记录。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRow 目标查询第一行的结果。
可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以判断返回值是否为 nil:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustRow ¶ added in v1.2.0
func (client *AbstractDbClient) MustRow(sqlText string, args ...any) *sqlen.EnhanceRow
MustRow 用于获取单个查询结果行。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRow 对象(是对 sql.Row 的增强包装对象)。
可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,要知道是否有数据可直接判断返回值的 len。
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustRowContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustRowContext(ctx context.Context, sqlText string, args ...any) *sqlen.EnhanceRow
MustRowContext 用于获取单个查询结果行。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRow 对象(是对 sql.Row 的增强包装对象)。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustRows ¶ added in v1.2.0
func (client *AbstractDbClient) MustRows(sqlText string, args ...any) *sqlen.EnhanceRows
MustRows 用于获取查询结果行的游标对象。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRows 对象(是对 sql.Rows 的增强包装对象)。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustRowsContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustRowsContext(ctx context.Context, sqlText string, args ...any) *sqlen.EnhanceRows
MustRowsContext 用于获取查询结果行的游标对象。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@row 返回目标行的 EnhanceRows 对象(是对 sql.Rows 的增强包装对象)。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustScalar ¶ added in v1.2.0
func (client *AbstractDbClient) MustScalar(sqlText string, args ...any) (any, bool)
MustScalar 用于获取查询的第一行第一列的值。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@cell 目标查询第一行第一列的值。 @hit true 表明有命中数据,false 则为没有命中数据,可通过该值区分是否为数据库空值。
可能 panic 出的 error(可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以通过第二个返回值区分:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustScalarContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustScalarContext(ctx context.Context, sqlText string, args ...any) (any, bool)
MustScalarContext 用于获取查询的第一行第一列的值。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@cell 目标查询第一行第一列的值。 @hit true 表明有命中数据,false 则为没有命中数据,可通过该值区分是否为数据库空值。
可能 panic 出的 error(可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以通过第二个返回值区分:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustSizedExecute ¶ added in v1.2.0
func (client *AbstractDbClient) MustSizedExecute(expectedSize int64, sqlText string, args ...any)
MustSizedExecute 用于执行非查询 sql 语句,并断言所影响的行数。 params:
@expectedSize 预期的影响行数,当 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExpectedSizeWrong: 当没有影响到预期行数时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustSizedExecuteContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustSizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any)
MustSizedExecuteContext 用于执行非查询 sql 语句,并断言所影响的行数。 params:
@ctx context。 @expectedSize 预期的影响行数,当 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
可能 panic 出的 error (可以通过 errors.Is 判断):
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
- sqlmer.ErrExpectedSizeWrong: 当没有影响到预期行数时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustSliceGet ¶ added in v1.2.0
func (client *AbstractDbClient) MustSliceGet(sqlText string, args ...any) []map[string]any
MustSliceGet 用于获取查询结果的所有行。 params:
@sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRows 目标查询结果的所有行。
可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以判断返回值是否为 nil:
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) MustSliceGetContext ¶ added in v1.2.0
func (client *AbstractDbClient) MustSliceGetContext(ctx context.Context, sqlText string, args ...any) []map[string]any
MustSliceGetContext 用于获取查询结果的所有行。 params:
@ctx context。 @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。 @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
returns:
@mapRows 目标查询结果的所有行。
可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,要知道是否有数据可直接判断返回值的 len。
- sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
- sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) Row ¶ added in v1.2.0
func (client *AbstractDbClient) Row(sqlText string, args ...any) (*sqlen.EnhanceRow, 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 (*AbstractDbClient) RowContext ¶ added in v1.2.0
func (client *AbstractDbClient) RowContext(ctx context.Context, sqlText string, args ...any) (*sqlen.EnhanceRow, 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 (*AbstractDbClient) Rows ¶ added in v1.2.0
func (client *AbstractDbClient) Rows(sqlText string, args ...any) (*sqlen.EnhanceRows, 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 (*AbstractDbClient) RowsContext ¶ added in v1.2.0
func (client *AbstractDbClient) RowsContext(ctx context.Context, sqlText string, args ...any) (*sqlen.EnhanceRows, 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 (*AbstractDbClient) Scalar ¶ added in v1.2.0
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 (*AbstractDbClient) ScalarContext ¶ added in v1.2.0
func (client *AbstractDbClient) ScalarContext(ctx context.Context, sqlText string, args ...any) (any, bool, 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 (*AbstractDbClient) SizedExecute ¶ added in v1.2.0
func (client *AbstractDbClient) SizedExecute(expectedSize int64, sqlText string, args ...any) 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 (*AbstractDbClient) SizedExecuteContext ¶ added in v1.2.0
func (client *AbstractDbClient) SizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any) 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 (*AbstractDbClient) SliceGet ¶ added in v1.2.0
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 (*AbstractDbClient) SliceGetContext ¶ added in v1.2.0
func (client *AbstractDbClient) SliceGetContext(ctx context.Context, sqlText string, args ...any) ([]map[string]any, 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 BindSqlArgsFunc ¶
BindSqlArgsFunc 定义用于预处理 sql 语句与参数的函数。
type DbClient ¶
type DbClient interface {
Dsn() string // Dsn 用于获取当前实例所使用的数据库连接字符串。
ErrorDbClient // error 版本 API。
MustDbClient // panic 版本 API。
}
DbClient 定义了数据库访问客户端。
type DbClientConfig ¶
type DbClientConfig struct {
Driver string // 数据库驱动名称。
Dsn string // 连接字符串。
Db *sql.DB // 数据库对象。
// contains filtered or unexported fields
}
func NewDbClientConfig ¶
func NewDbClientConfig(options ...DbClientOption) (*DbClientConfig, error)
NewDbClientConfig 创建一个数据库连接配置。
type DbClientOption ¶
type DbClientOption func(config *DbClientConfig) error
DbClientOption 是 DbClientConfig 的可选配置。
func WithBindArgsFunc ¶
func WithBindArgsFunc(argsFunc BindSqlArgsFunc) DbClientOption
WithBindArgsFunc 用于为 DbClientConfig 设置处理参数的函数。
func WithConnTimeout ¶
func WithConnTimeout(timeout time.Duration) DbClientOption
WithConnTimeout 用于为 DbClientConfig 设置获取数据库连接的超时时间。
func WithDb ¶ added in v1.2.0
func WithDb(db *sql.DB, driver string, dsn string) DbClientOption
WithDb 用于用现有的 sql.DB 初始化 DbClientOption。
func WithDsn ¶ added in v1.3.11
func WithDsn(driver string, dsn string) DbClientOption
WithDsn 用于用现有的 sql.DB 初始化 DbClientOption。
func WithExecTimeout ¶
func WithExecTimeout(timeout time.Duration) DbClientOption
WithExecTimeout 用于为 DbClientConfig 设置默认的执行超时时间。
func WithGetScanTypeFunc ¶ added in v1.3.11
func WithGetScanTypeFunc(scanFunc sqlen.GetScanTypeFunc) DbClientOption
WithBindArgsFunc 用于为 DbClientConfig 设置根据列信息获取 Scan 类型的函数。
func WithPingCheck ¶ added in v1.2.0
func WithPingCheck(withPingCheck bool) DbClientOption
WithPingCheck 用于选择是否在初始化 DbClient 时候进行 ping 操作(默认为 false)。
func WithUnifyDataTypeFunc ¶ added in v1.3.1
func WithUnifyDataTypeFunc(unifyDataType sqlen.UnifyDataTypeFn) DbClientOption
WithUnifyDataTypeFunc 用于为 DbClient 注入驱动相关的类型转换逻辑。
type ErrorDbClient ¶ added in v1.3.10
type ErrorDbClient interface {
// CreateTransaction 用于开始一个事务。
// returns:
// @tran 返回一个实现了 TransactionKeeper(内嵌 DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。
// @err 创建事务时遇到的错误。
CreateTransaction() (tran TransactionKeeper, 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 语句执行时遇到错误,返回该类型错误。
Execute(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 语句执行时遇到错误,返回该类型错误。
ExecuteContext(ctx context.Context, sqlText string, args ...any) (rowsEffected int64, 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 语句执行时遇到错误,返回该类型错误。
SizedExecute(expectedSize int64, sqlText string, args ...any) 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 语句执行时遇到错误,返回该类型错误。
SizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any) 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 语句执行时遇到错误,返回该类型错误。
Exists(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 语句执行时遇到错误,返回该类型错误。
ExistsContext(ctx context.Context, sqlText string, args ...any) (ok bool, err error)
// 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 语句执行时遇到错误,返回该类型错误。
Scalar(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 语句执行时遇到错误,返回该类型错误。
ScalarContext(ctx context.Context, sqlText string, args ...any) (cell any, hit bool, err error)
// 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 语句执行时遇到错误,返回该类型错误。
Get(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 语句执行时遇到错误,返回该类型错误。
GetContext(ctx context.Context, sqlText string, args ...any) (mapRow 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 语句执行时遇到错误,返回该类型错误。
SliceGet(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 语句执行时遇到错误,返回该类型错误。
SliceGetContext(ctx context.Context, sqlText string, args ...any) (mapRows []map[string]any, 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 语句执行时遇到错误,返回该类型错误。
Row(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 语句执行时遇到错误,返回该类型错误。
RowContext(context context.Context, sqlText string, args ...any) (row *sqlen.EnhanceRow, 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 语句执行时遇到错误,返回该类型错误。
Rows(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 语句执行时遇到错误,返回该类型错误。
RowsContext(context context.Context, sqlText string, args ...any) (rows *sqlen.EnhanceRows, err error)
}
ErrorDbClient 为 error 版本 API。
type ErrorTransactionKeeper ¶ added in v1.3.10
type ErrorTransactionKeeper interface {
// Commit 用于提交事务。
Commit() error
// Rollback 用于回滚事务。
Rollback() error
// Close 用于优雅关闭事务,创建事务后可 defer 执行本方法。
Close() error
}
ErrorTransactionKeeper 为 error 版本 API。
type MustDbClient ¶ added in v1.3.10
type MustDbClient interface {
// MustCreateTransaction 用于开始一个事务。
// returns:
// @tran 返回一个实现了 TransactionKeeper(内嵌 DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。
MustCreateTransaction() (tran TransactionKeeper)
// MustExecute 用于执行非查询 sql 语句,并返回所影响的行数。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @effectedRows 语句影响的行数。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustExecute(sqlText string, args ...any) (rowsEffected int64)
// MustExecuteContext 用于执行非查询SQL语句,并返回所影响的行数。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @effectedRows 语句影响的行数。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustExecuteContext(context context.Context, sqlText string, args ...any) (rowsEffected int64)
// MustSizedExecute 用于执行非查询 sql 语句,并断言所影响的行数。
// params:
// @expectedSize 预期的影响行数,当
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
// - sqlmer.ErrExpectedSizeWrong: 当没有影响到预期行数时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustSizedExecute(expectedSize int64, sqlText string, args ...any)
// MustSizedExecuteContext 用于执行非查询 sql 语句,并断言所影响的行数。
// params:
// @ctx context。
// @expectedSize 预期的影响行数,当
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrGetEffectedRows: 当执行成功,但驱动不支持获取影响行数时候,返回该类型错误。
// - sqlmer.ErrExpectedSizeWrong: 当没有影响到预期行数时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustSizedExecuteContext(context context.Context, expectedSize int64, sqlText string, args ...any)
// MustExists 用于判断给定的查询的结果是否至少包含 1 行。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @ok 结果至少包含一行。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustExists(sqlText string, args ...any) (ok bool)
// MustExistsContext 用于判断给定的查询的结果是否至少包含 1 行。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @ok 结果至少包含一行。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustExistsContext(context context.Context, sqlText string, args ...any) (ok bool)
// MustScalar 用于获取查询的第一行第一列的值。
// Scalar 用于获取查询的第一行第一列的值。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @cell 目标查询第一行第一列的值。
// @hit true 表明有命中数据,false 则为没有命中数据,可通过该值区分是否为数据库空值。
// 可能 panic 出的 error(可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以通过第二个返回值区分:
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustScalar(sqlText string, args ...any) (cell any, hit bool)
// MustScalarContext 用于获取查询的第一行第一列的值。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @cell 目标查询第一行第一列的值。
// @hit true 表明有命中数据,false 则为没有命中数据,可通过该值区分是否为数据库空值。
// 可能 panic 出的 error(可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以通过第二个返回值区分:
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustScalarContext(context context.Context, sqlText string, args ...any) (cell any, hit bool)
// MustGet 用于获取查询结果的第一行记录。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @mapRow 目标查询第一行的结果。
// 可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以判断返回值是否为 nil:
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustGet(sqlText string, args ...any) (mapRow map[string]any)
// MustGetContext 用于获取查询结果的第一行记录。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @mapRow 目标查询第一行的结果。
// 可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以判断返回值是否为 nil:
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustGetContext(context context.Context, sqlText string, args ...any) (mapRow map[string]any)
// MustSliceGet 用于获取查询结果的所有行。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @mapRows 目标查询结果的所有行。
// 可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,可以判断返回值是否为 nil:
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustSliceGet(sqlText string, args ...any) (mapRows []map[string]any)
// MustSliceGetContext 用于获取查询结果的所有行。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @mapRows 目标查询结果的所有行。
// 可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,要知道是否有数据可直接判断返回值的 len。
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustSliceGetContext(context context.Context, sqlText string, args ...any) (mapRows []map[string]any)
// MustRow 用于获取单个查询结果行。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @row 返回目标行的 EnhanceRow 对象(是对 sql.Row 的增强包装对象)。
// 可能 panic 出的 error (可以通过 errors.Is 判断),注意,sql.ErrNoRows 不会 panic,要知道是否有数据可直接判断返回值的 len。
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustRow(sqlText string, args ...any) (row *sqlen.EnhanceRow)
// MustRowContext 用于获取单个查询结果行。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @row 返回目标行的 EnhanceRow 对象(是对 sql.Row 的增强包装对象)。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustRowContext(context context.Context, sqlText string, args ...any) (row *sqlen.EnhanceRow)
// MustRows 用于获取查询结果行的游标对象。
// params:
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @row 返回目标行的 EnhanceRows 对象(是对 sql.Rows 的增强包装对象)。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustRows(sqlText string, args ...any) (rows *sqlen.EnhanceRows)
// MustRowsContext 用于获取查询结果行的游标对象。
// params:
// @ctx context。
// @sqlText SQL 语句,支持 @ 的命名参数占位及 @p1...@pn 这样的索引占位符。
// @args SQL 语句的参数,支持通过 map[string]any 提供命名参数值 或 通过变长参数提供索引参数值。
// returns:
// @row 返回目标行的 EnhanceRows 对象(是对 sql.Rows 的增强包装对象)。
// 可能 panic 出的 error (可以通过 errors.Is 判断):
// - sqlmer.ErrParseParamFailed: 当 SQL 语句中的参数解析失败时返回该类错误。
// - sqlmer.ErrExecutingSql: 当 SQL 语句执行时遇到错误,返回该类型错误。
MustRowsContext(context context.Context, sqlText string, args ...any) (rows *sqlen.EnhanceRows)
}
MustDbClient 为 panic 版本 API
type MustTransactionKeeper ¶ added in v1.3.10
type MustTransactionKeeper interface {
// MustClose 用于提交事务。
MustCommit()
// MustClose 用于回滚事务。
MustRollback()
// MustClose 用于优雅关闭事务,创建事务后可 defer 执行本方法。
MustClose()
}
MustTransactionKeeper 为 panic 版本 API。
type TransactionKeeper ¶
type TransactionKeeper interface {
DbClient // DbClient 实现了数据库访问客户端的功能。
ErrorTransactionKeeper // error 版本 API。
MustTransactionKeeper // panic 版本 API。
}
TransactionKeeper 是一个定义数据库事务容器。