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) GetConnTimeout() time.Duration
- func (client *AbstractDbClient) GetContext(ctx context.Context, sqlText string, args ...any) (map[string]any, error)
- func (client *AbstractDbClient) GetExecTimeout() time.Duration
- 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 DbClientEx
- func (c *DbClientEx) CreateTransactionEx() (*TransactionKeeperEx, error)
- func (c *DbClientEx) GetStruct(ptr any, query string, args ...any) (ok bool, err error)
- func (c *DbClientEx) ListOf(elemExample any, query string, args ...any) (any, error)
- func (c *DbClientEx) ListType(elemTyp reflect.Type, query string, args ...any) (any, error)
- func (client *DbClientEx) MustCreateTransaction() *TransactionKeeperEx
- func (c *DbClientEx) MustCreateTransactionEx() *TransactionKeeperEx
- func (client *DbClientEx) MustExecute(sqlText string, args ...any) int64
- func (client *DbClientEx) MustExecuteContext(ctx context.Context, sqlText string, args ...any) int64
- func (client *DbClientEx) MustExists(sqlText string, args ...any) bool
- func (client *DbClientEx) MustExistsContext(ctx context.Context, sqlText string, args ...any) bool
- func (client *DbClientEx) MustGet(sqlText string, args ...any) map[string]any
- func (client *DbClientEx) MustGetContext(ctx context.Context, sqlText string, args ...any) map[string]any
- func (c *DbClientEx) MustGetStruct(ptr any, query string, args ...any) (ok bool)
- func (c *DbClientEx) MustListOf(elemExample any, query string, args ...any) any
- func (c *DbClientEx) MustListType(elemTyp reflect.Type, query string, args ...any) any
- func (client *DbClientEx) MustRow(sqlText string, args ...any) *sqlen.EnhanceRow
- func (client *DbClientEx) MustRowContext(ctx context.Context, sqlText string, args ...any) *sqlen.EnhanceRow
- func (client *DbClientEx) MustRows(sqlText string, args ...any) *sqlen.EnhanceRows
- func (client *DbClientEx) MustRowsContext(ctx context.Context, sqlText string, args ...any) *sqlen.EnhanceRows
- func (client *DbClientEx) MustScalar(sqlText string, args ...any) (any, bool)
- func (c *DbClientEx) MustScalarBool(query string, args ...any) (value *bool, ok bool)
- func (client *DbClientEx) MustScalarContext(ctx context.Context, sqlText string, args ...any) (any, bool)
- func (c *DbClientEx) MustScalarFloat32(query string, args ...any) (value *float32, ok bool)
- func (c *DbClientEx) MustScalarFloat64(query string, args ...any) (value *float64, ok bool)
- func (c *DbClientEx) MustScalarInt(query string, args ...any) (value *int, ok bool)
- func (c *DbClientEx) MustScalarInt16(query string, args ...any) (value *int16, ok bool)
- func (c *DbClientEx) MustScalarInt32(query string, args ...any) (value *int32, ok bool)
- func (c *DbClientEx) MustScalarInt64(query string, args ...any) (value *int64, ok bool)
- func (c *DbClientEx) MustScalarInt8(query string, args ...any) (value *int8, ok bool)
- func (c *DbClientEx) MustScalarOf(example any, query string, args ...any) (value any, ok bool, err error)
- func (c *DbClientEx) MustScalarString(query string, args ...any) (value *string, ok bool)
- func (c *DbClientEx) MustScalarType(typ reflect.Type, query string, args ...any) (value any, ok bool)
- func (client *DbClientEx) MustSizedExecute(expectedSize int64, sqlText string, args ...any)
- func (client *DbClientEx) MustSizedExecuteContext(ctx context.Context, expectedSize int64, sqlText string, args ...any)
- func (client *DbClientEx) MustSliceGet(sqlText string, args ...any) []map[string]any
- func (client *DbClientEx) MustSliceGetContext(ctx context.Context, sqlText string, args ...any) []map[string]any
- func (c *DbClientEx) ScalarBool(query string, args ...any) (value *bool, ok bool, err error)
- func (c *DbClientEx) ScalarFloat32(query string, args ...any) (value *float32, ok bool, err error)
- func (c *DbClientEx) ScalarFloat64(query string, args ...any) (value *float64, ok bool, err error)
- func (c *DbClientEx) ScalarInt(query string, args ...any) (value *int, ok bool, err error)
- func (c *DbClientEx) ScalarInt16(query string, args ...any) (value *int16, ok bool, err error)
- func (c *DbClientEx) ScalarInt32(query string, args ...any) (value *int32, ok bool, err error)
- func (c *DbClientEx) ScalarInt64(query string, args ...any) (value *int64, ok bool, err error)
- func (c *DbClientEx) ScalarInt8(query string, args ...any) (value *int8, ok bool, err error)
- func (c *DbClientEx) ScalarOf(example any, query string, args ...any) (value any, ok bool, err error)
- func (c *DbClientEx) ScalarString(query string, args ...any) (value *string, ok bool, err error)
- func (c *DbClientEx) ScalarType(typ reflect.Type, query string, args ...any) (value any, ok bool, err error)
- 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 MustDbClient
- type TransactionKeeper
- type TransactionKeeperEx
Constants ¶
This section is empty.
Variables ¶
var ( // ErrTran 是数据库执行事务操作遇到的错误。 ErrTran = errors.New("dbTrans") // ErrConnect 是 DbClient 获取数据库连接时遇到的错误。 ErrConnect = errors.New("dbConnect") // ErrGetEffectedRows 当数据库不支持获取影响行数时候,会返回改类型的错误。 ErrGetEffectedRows = errors.New("dbClient: the db driver do not support getting effected rows") // ErrSqlParamParse 解析 SQL 语句中的参数遇到错误时候,会返回该类型错误。 ErrParseParamFailed = errors.New("dbClient: failed to parse named params") // ErrExpectedSizeWrong 当执行语句时候,没有影响到预期行数,返回该类型错误。 ErrExpectedSizeWrong = errors.New("dbClient: effected rows was wrong") // ErrExecutingSql 当执行 SQL 语句执行时遇到错误,返回该类型错误。 ErrExecutingSql = errors.New("dbClient: failed to execute sql") )
var MaxLengthErrorValue = 64 * 1024
MaxLengthErrorValue 用于限制错误输出中参数的长度,超过该大小将会进行截断。 NOTE: 可自行调整该值。
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
func (client *AbstractDbClient) Get(sqlText string, args ...any) (map[string]any, 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 语句执行时遇到错误,返回该类型错误。
func (*AbstractDbClient) GetConnTimeout ¶ added in v1.7.0
func (client *AbstractDbClient) GetConnTimeout() time.Duration
GetConnTimeout 用于获取当前 DbClient 实例的连接超时时间。
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) GetExecTimeout ¶ added in v1.7.0
func (client *AbstractDbClient) GetExecTimeout() time.Duration
GetExecTimeout 用于获取当前 DbClient 实例的执行超时时间。
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
func (client *AbstractDbClient) Scalar(sqlText string, args ...any) (any, bool, 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 语句执行时遇到错误,返回该类型错误。
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
func (client *AbstractDbClient) SliceGet(sqlText string, args ...any) ([]map[string]any, 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 (*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 用于获取当前实例所使用的数据库连接字符串。 Dsn() string // GetConnTimeout 用于获取当前 DbClient 实例的获取连接的超时时间。 GetConnTimeout() time.Duration // GetExecTimeout 用于获取当前 DbClient 实例的执行超时时间。 GetExecTimeout() time.Duration // 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 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 DbClientEx ¶ added in v1.5.0
type DbClientEx struct { DbClient // 原始的 DbClient 实例。 Conv conv.Conv // 为当前实例提供类型转换的 conv.Conv 实例。 }
DbClientEx 加强 DbClient。
- 提供 Must 版本的 API;
- 提供强类型的转化方法;
func (*DbClientEx) CreateTransactionEx ¶ added in v1.5.3
func (c *DbClientEx) CreateTransactionEx() (*TransactionKeeperEx, error)
CreateTransactionEx 基于 DbClient.CreateTransaction 创建一个 TransactionKeeperEx 实例。
func (*DbClientEx) GetStruct ¶ added in v1.5.0
func (c *DbClientEx) GetStruct(ptr any, query string, args ...any) (ok bool, err error)
GetStruct 获取一行的查询结果,转化并填充到 ptr 。 ptr 必须是 struct 类型的指针。 若查询没有命中行,返回 ok=false , ptr 不会被赋值。
func (*DbClientEx) ListOf ¶ added in v1.5.0
func (c *DbClientEx) ListOf(elemExample any, query string, args ...any) (any, error)
ListOf 将查询结果的每一行转换到指定类型。返回转换后的元素的列表,需给定列表中的元素的类型。若查询没有命中行,返回空集。
注意,给定的 elemTyp 是元素的类型,返回的则是该元素的 slice :
type Info struct { /* fields */ } list, err := ListOf(new(Info), query) if err != nil { return err } infos := list.([]*Info)
func (*DbClientEx) ListType ¶ added in v1.5.0
func (c *DbClientEx) ListType(elemTyp reflect.Type, query string, args ...any) (any, error)
ListOf 将查询结果的每一行转换到指定类型。返回转换后的元素的列表,需给定列表中的元素的类型。若查询没有命中行,返回空集。
注意,给定的 elemTyp 是元素的类型,返回的则是该元素的 slice :
list, err := ListType(reflect.TypeOf(0), query) if err != nil { return err } infos := list.([]int)
func (*DbClientEx) MustCreateTransaction ¶ added in v1.5.2
func (client *DbClientEx) MustCreateTransaction() *TransactionKeeperEx
MustCreateTransactionEx(和 MustCreateTransaction 一致) 用于开始一个事务。 returns:
@tran 返回一个TransactionKeeperEx 实例(实现了 TransactionKeeper、DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。
func (*DbClientEx) MustCreateTransactionEx ¶ added in v1.5.3
func (c *DbClientEx) MustCreateTransactionEx() *TransactionKeeperEx
MustCreateTransactionEx(和 MustCreateTransaction 一致) 用于开始一个事务。 returns:
@tran 返回一个TransactionKeeperEx 实例(实现了 TransactionKeeper、DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。
func (*DbClientEx) MustExecute ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustExecuteContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustExists ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustExistsContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustGet ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustGetContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustGetStruct ¶ added in v1.5.0
func (c *DbClientEx) MustGetStruct(ptr any, query string, args ...any) (ok bool)
MustGetStruct 类似 GetStruct ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustListOf ¶ added in v1.5.0
func (c *DbClientEx) MustListOf(elemExample any, query string, args ...any) any
MustListOf 类似 ListOf ,但出现错误时不返回 error ,而是 panic 。
type Info struct { /* fields */ } list := MustListOf(new(Info), query).([]*Info)
func (*DbClientEx) MustListType ¶ added in v1.5.0
func (c *DbClientEx) MustListType(elemTyp reflect.Type, query string, args ...any) any
MustListType 类似 ListType ,但出现错误时不返回 error ,而是 panic 。
注意,给定的 elemTyp 是元素的类型,返回的则是该元素的 slice :
list := MustListType(reflect.TypeOf(0), query).([]int)
func (*DbClientEx) MustRow ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustRowContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustRows ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustRowsContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustScalar ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustScalarBool ¶ added in v1.5.0
func (c *DbClientEx) MustScalarBool(query string, args ...any) (value *bool, ok bool)
MustScalarBool 类似 ScalarBool ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustScalarFloat32 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarFloat32(query string, args ...any) (value *float32, ok bool)
MustScalarFloat32 类似 ScalarFloat32 ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarFloat64 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarFloat64(query string, args ...any) (value *float64, ok bool)
MustScalarFloat64 类似 ScalarFloat64 ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarInt ¶ added in v1.5.0
func (c *DbClientEx) MustScalarInt(query string, args ...any) (value *int, ok bool)
MustScalarInt 类似 ScalarInt ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarInt16 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarInt16(query string, args ...any) (value *int16, ok bool)
MustScalarInt16 类似 ScalarInt16 ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarInt32 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarInt32(query string, args ...any) (value *int32, ok bool)
MustScalarInt32 类似 ScalarInt32 ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarInt64 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarInt64(query string, args ...any) (value *int64, ok bool)
MustScalarInt64 类似 ScalarInt64 ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarInt8 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarInt8(query string, args ...any) (value *int8, ok bool)
MustScalarInt8 类似 ScalarInt8 ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarOf ¶ added in v1.5.0
func (c *DbClientEx) MustScalarOf(example any, query string, args ...any) (value any, ok bool, err error)
MustScalarOf 类似 ScalarOf ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarString ¶ added in v1.5.0
func (c *DbClientEx) MustScalarString(query string, args ...any) (value *string, ok bool)
MustScalarString 类似 ScalarString ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustScalarType ¶ added in v1.5.0
func (c *DbClientEx) MustScalarType(typ reflect.Type, query string, args ...any) (value any, ok bool)
MustScalarType 类似 ScalarType ,但出现错误时不返回 error ,而是 panic 。
func (*DbClientEx) MustSizedExecute ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustSizedExecuteContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustSliceGet ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) MustSliceGetContext ¶ added in v1.7.0
func (client *DbClientEx) 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 (*DbClientEx) ScalarBool ¶ added in v1.5.0
func (c *DbClientEx) ScalarBool(query string, args ...any) (value *bool, ok bool, err error)
ScalarBool 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarFloat32 ¶ added in v1.5.0
func (c *DbClientEx) ScalarFloat32(query string, args ...any) (value *float32, ok bool, err error)
ScalarFloat32 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarFloat64 ¶ added in v1.5.0
func (c *DbClientEx) ScalarFloat64(query string, args ...any) (value *float64, ok bool, err error)
ScalarFloat64 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarInt ¶ added in v1.5.0
func (c *DbClientEx) ScalarInt(query string, args ...any) (value *int, ok bool, err error)
ScalarInt 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarInt16 ¶ added in v1.5.0
func (c *DbClientEx) ScalarInt16(query string, args ...any) (value *int16, ok bool, err error)
ScalarInt16 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarInt32 ¶ added in v1.5.0
func (c *DbClientEx) ScalarInt32(query string, args ...any) (value *int32, ok bool, err error)
ScalarInt32 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarInt64 ¶ added in v1.5.0
func (c *DbClientEx) ScalarInt64(query string, args ...any) (value *int64, ok bool, err error)
ScalarInt64 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarInt8 ¶ added in v1.5.0
func (c *DbClientEx) ScalarInt8(query string, args ...any) (value *int8, ok bool, err error)
ScalarInt8 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarOf ¶ added in v1.5.0
func (c *DbClientEx) ScalarOf(example any, query string, args ...any) (value any, ok bool, err error)
ScalarOf 查询第一行第一列,并返回与 example 相同类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
下面两行代码等价:
client.ScalarOf("", query) client.ScalarType(reflect.TypeOf(""), query)
func (*DbClientEx) ScalarString ¶ added in v1.5.0
func (c *DbClientEx) ScalarString(query string, args ...any) (value *string, ok bool, err error)
ScalarString 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回空指针和 ok=false ;若有结果但值是 null ,则返回空指针和 ok=true 。 若值不是目标类型,则尝试转换类型。
func (*DbClientEx) ScalarType ¶ added in v1.5.0
func (c *DbClientEx) ScalarType(typ reflect.Type, query string, args ...any) (value any, ok bool, err error)
ScalarType 查询第一行第一列,并返回目标类型的值。 若查询没有命中行,返回 nil 和 ok=false ;若有结果但值是 null ,则返回 nil 和 ok=true 。 若值不是目标类型,则尝试转换类型。
例1,获取可空字段:
var s *string v, ok, err := client.ScalarType(reflect.TypeOf(s), querySomeNullable) if err != nil && ok { s = v.(*string) }
例2,获取非空字段:
var s string v, ok, err := client.ScalarType(reflect.TypeOf(s), querySomeNonNullable) if err != nil && ok { s = v.(string) }
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 MustDbClient ¶ added in v1.3.10
type MustDbClient interface { // MustCreateTransactionEx(和 MustCreateTransaction 一致) 用于开始一个事务。 // returns: // @tran 返回一个TransactionKeeperEx 实例(实现了 TransactionKeeper、DbClient 接口) 接口的对象,在上面执行的语句会在同一个事务中执行。 MustCreateTransaction() (tran *TransactionKeeperEx) // 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 提供了 DBClient 的 panic 版本 API
type TransactionKeeper ¶
type TransactionKeeper interface { DbClient // DbClient 实现了数据库访问客户端的功能。 // Commit 用于提交事务。 Commit() error // Rollback 用于回滚事务。 Rollback() error // Close 用于优雅关闭事务,创建事务后可 defer 执行本方法。 Close() error }
TransactionKeeper 是一个定义数据库事务容器。
type TransactionKeeperEx ¶ added in v1.5.2
type TransactionKeeperEx struct { *DbClientEx TransactionKeeper }
TransactionKeeperEx 扩展 TransactionKeeper ,增加 DbClientEx 的功能和 Must 版本的事务 API。
func ExtendTx ¶ added in v1.7.3
func ExtendTx(raw TransactionKeeper) *TransactionKeeperEx
ExtendTx 加强 TransactionKeeper 。
- 提供 Must 版本的 API;
func (*TransactionKeeperEx) MustClose ¶ added in v1.7.0
func (transKeeper *TransactionKeeperEx) MustClose()
MustClose 用于优雅关闭事务,创建事务后务必执行本方法或 Close 方法。
func (*TransactionKeeperEx) MustCommit ¶ added in v1.7.0
func (transKeeper *TransactionKeeperEx) MustCommit()
MustCommit 用于提交事务。
func (*TransactionKeeperEx) MustRollback ¶ added in v1.7.0
func (transKeeper *TransactionKeeperEx) MustRollback()
MustRollback 用于回滚事务。