mirror of
https://github.com/tobycroft/gorose-pro.git
synced 2026-04-22 15:47:04 +08:00
a6ac82136c
- 在 orm.go 和 orm_interface.go 中添加 DataStructStrict 方法,支持基于 tag 的严格解析 - 在 structEngineNew.go 中添加 StructToMapStrict 和 StructToMapStrictSlices 函数,仅解析带有指定标签的字段
80 lines
2.8 KiB
Go
80 lines
2.8 KiB
Go
package gorose
|
|
|
|
// IOrm ...
|
|
type IOrm interface {
|
|
IOrmApi
|
|
IOrmQuery
|
|
IOrmExecute
|
|
IOrmSession
|
|
//ISession
|
|
Close()
|
|
BuildSql(operType ...string) (string, []interface{}, error)
|
|
Table(tab interface{}) IOrm
|
|
SubQuery(sql, alias string, args []interface{}) IOrm
|
|
SubWhere(field, condition, sql string, args []interface{}) IOrm
|
|
// fields=select
|
|
Fields(fields ...string) IOrm
|
|
AddFields(fields ...string) IOrm
|
|
// distinct 方法允许你强制查询返回不重复的结果集:
|
|
Distinct() IOrm
|
|
Data(data interface{}) IOrm
|
|
DataStruct(data interface{}) IOrm
|
|
DataStructStrict(data interface{}) IOrm
|
|
// groupBy, orderBy, having
|
|
Group(group string) IOrm
|
|
GroupBy(group string) IOrm
|
|
Having(having string) IOrm
|
|
Order(order string) IOrm
|
|
OrderBy(order string) IOrm
|
|
Limit(limit int) IOrm
|
|
Offset(offset int) IOrm
|
|
Page(page int) IOrm
|
|
// join(=innerJoin),leftJoin,rightJoin,crossJoin
|
|
Join(args ...interface{}) IOrm
|
|
LeftJoin(args ...interface{}) IOrm
|
|
RightJoin(args ...interface{}) IOrm
|
|
CrossJoin(args ...interface{}) IOrm
|
|
// `Where`,`OrWhere`,`WhereNull / WhereNotNull`,`WhereIn / WhereNotIn / OrWhereIn / OrWhereNotIn`,`WhereBetween / WhereBetwee / OrWhereBetween / OrWhereNotBetween`
|
|
Where(args ...interface{}) IOrm
|
|
OrWhere(args ...interface{}) IOrm
|
|
WhereOr(args ...interface{}) IOrm
|
|
WhereOrAnd(args ...interface{}) IOrm
|
|
WhereNull(arg string) IOrm
|
|
OrWhereNull(arg string) IOrm
|
|
WhereNotNull(arg string) IOrm
|
|
OrWhereNotNull(arg string) IOrm
|
|
WhereRegexp(arg string, expstr string) IOrm
|
|
OrWhereRegexp(arg string, expstr string) IOrm
|
|
WhereNotRegexp(arg string, expstr string) IOrm
|
|
OrWhereNotRegexp(arg string, expstr string) IOrm
|
|
WhereIn(needle string, hystack []interface{}) IOrm
|
|
OrWhereIn(needle string, hystack []interface{}) IOrm
|
|
WhereNotIn(needle string, hystack []interface{}) IOrm
|
|
OrWhereNotIn(needle string, hystack []interface{}) IOrm
|
|
WhereBetween(needle string, hystack []interface{}) IOrm
|
|
OrWhereBetween(needle string, hystack []interface{}) IOrm
|
|
WhereNotBetween(needle string, hystack []interface{}) IOrm
|
|
OrWhereNotBetween(needle string, hystack []interface{}) IOrm
|
|
// truncate
|
|
Truncate() error
|
|
GetDriver() string
|
|
//GetIBinder() IBinder
|
|
SetBindValues(v interface{})
|
|
GetBindValues() []interface{}
|
|
IsSubQuery() bool
|
|
ClearBindValues()
|
|
Transaction(closers ...func(db IOrm) error) (err error)
|
|
Reset() IOrm
|
|
ResetTable() IOrm
|
|
ResetWhere() IOrm
|
|
GetISession() ISession
|
|
GetOrmApi() *OrmApi
|
|
// 悲观锁使用
|
|
// sharedLock(lock in share mode) 不会阻塞其它事务读取被锁定行记录的值
|
|
SharedLock() *Orm
|
|
// 此外你还可以使用 lockForUpdate 方法。“for update”锁避免选择行被其它共享锁修改或删除:
|
|
// 会阻塞其他锁定性读对锁定行的读取(非锁定性读仍然可以读取这些记录,lock in share mode 和 for update 都是锁定性读)
|
|
LockForUpdate() *Orm
|
|
//ResetUnion() IOrm
|
|
}
|