Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
二次元的罪恶王冠
beego
提交
fc2c96a1
B
beego
项目概览
二次元的罪恶王冠
/
beego
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beego
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fc2c96a1
编写于
6月 23, 2018
作者:
H
hurisheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add 'FOR UPDATE' support for querySet
上级
f1668881
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
10 deletion
+25
-10
orm/db.go
orm/db.go
+4
-0
orm/orm_queryset.go
orm/orm_queryset.go
+17
-10
orm/types.go
orm/types.go
+4
-0
未找到文件。
orm/db.go
浏览文件 @
fc2c96a1
...
...
@@ -969,6 +969,10 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi
}
query
:=
fmt
.
Sprintf
(
"%s %s FROM %s%s%s T0 %s%s%s%s%s"
,
sqlSelect
,
sels
,
Q
,
mi
.
table
,
Q
,
join
,
where
,
groupBy
,
orderBy
,
limit
)
if
qs
.
forupdate
{
query
+=
" FOR UPDATE"
}
d
.
ins
.
ReplaceMarks
(
&
query
)
var
rs
*
sql
.
Rows
...
...
orm/orm_queryset.go
浏览文件 @
fc2c96a1
...
...
@@ -55,16 +55,17 @@ func ColValue(opt operator, value interface{}) interface{} {
// real query struct
type
querySet
struct
{
mi
*
modelInfo
cond
*
Condition
related
[]
string
relDepth
int
limit
int64
offset
int64
groups
[]
string
orders
[]
string
distinct
bool
orm
*
orm
mi
*
modelInfo
cond
*
Condition
related
[]
string
relDepth
int
limit
int64
offset
int64
groups
[]
string
orders
[]
string
distinct
bool
forupdate
bool
orm
*
orm
}
var
_
QuerySeter
=
new
(
querySet
)
...
...
@@ -127,6 +128,12 @@ func (o querySet) Distinct() QuerySeter {
return
&
o
}
// add FOR UPDATE to SELECT
func
(
o
querySet
)
ForUpdate
()
QuerySeter
{
o
.
forupdate
=
true
return
&
o
}
// set relation model to query together.
// it will query relation models and assign to parent model.
func
(
o
querySet
)
RelatedSel
(
params
...
interface
{})
QuerySeter
{
...
...
orm/types.go
浏览文件 @
fc2c96a1
...
...
@@ -190,6 +190,10 @@ type QuerySeter interface {
// Distinct().
// All(&permissions)
Distinct
()
QuerySeter
// set FOR UPDATE to query.
// for example:
// o.QueryTable("user").Filter("uid", uid).ForUpdate().All(&users)
ForUpdate
()
QuerySeter
// return QuerySeter execution result number
// for example:
// num, err = qs.Filter("profile__age__gt", 28).Count()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录