add Options() to specify query options
This commit is contained in:
parent
7fd31fc7e7
commit
26045610e1
|
@ -571,6 +571,13 @@ func (engine *Engine) SetExpr(column string, expression string) *Session {
|
|||
return session.SetExpr(column, expression)
|
||||
}
|
||||
|
||||
// Method Options specify the query option
|
||||
func (engine *Engine) Options(options ...string) *Session {
|
||||
session := engine.NewSession()
|
||||
session.IsAutoClose = true
|
||||
return session.Options(options...)
|
||||
}
|
||||
|
||||
// Temporarily change the Get, Find, Update's table
|
||||
func (engine *Engine) Table(tableNameOrBean interface{}) *Session {
|
||||
session := engine.NewSession()
|
||||
|
|
|
@ -168,6 +168,12 @@ func (session *Session) SetExpr(column string, expression string) *Session {
|
|||
return session
|
||||
}
|
||||
|
||||
// Method Options specify the query option
|
||||
func (session *Session) Options(options ...string) *Session {
|
||||
session.Statement.Options = options
|
||||
return session
|
||||
}
|
||||
|
||||
// Method Cols provides some columns to special
|
||||
func (session *Session) Cols(columns ...string) *Session {
|
||||
session.Statement.Cols(columns...)
|
||||
|
|
15
statement.go
15
statement.go
|
@ -69,6 +69,7 @@ type Statement struct {
|
|||
incrColumns map[string]incrParam
|
||||
decrColumns map[string]decrParam
|
||||
exprColumns map[string]exprParam
|
||||
Options []string
|
||||
}
|
||||
|
||||
// init
|
||||
|
@ -1308,6 +1309,20 @@ func (statement *Statement) genSelectSql(columnStr string) (a string) {
|
|||
}
|
||||
}
|
||||
|
||||
if len(statement.Options) > 0 {
|
||||
switch statement.Engine.dialect.DBType() {
|
||||
case core.MYSQL:
|
||||
for _, option := range statement.Options {
|
||||
switch option {
|
||||
case "select:for-update":
|
||||
a += " FOR UPDATE"
|
||||
case "select:lock-in-share-mode":
|
||||
a += " LOCK IN SHARE MODE"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue