add Options() to specify query options

This commit is contained in:
江林锦 2015-04-23 12:44:35 +08:00
parent 7fd31fc7e7
commit 26045610e1
3 changed files with 29 additions and 1 deletions

View File

@ -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()

View File

@ -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...)

View File

@ -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
}