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) MustScalarInt8(query string, args ...any) (value *int8, 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) 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) ScalarInt8(query string, args ...any) (value *int8, 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) 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) MustScalarInt8 ¶ added in v1.5.0
func (c *DbClientEx) MustScalarInt8(query string, args ...any) (value *int8, ok bool)
MustScalarInt8 类似 ScalarInt8 ,但出现错误时不返回 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) 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) 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) 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) 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 用于回滚事务。