Skip to content

Commit d5c0d84

Browse files
committed
增加批量插入生成代码
1 parent 1657298 commit d5c0d84

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

gen_proxy_v2.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,35 @@ func genV2Proxy(config Config, tableName string, models []common.ModelInfo) {
154154
builder.WriteString(common.Newline())
155155
//insert end
156156

157+
//insert batch
158+
builder.WriteString(fmt.Sprintf("func InsertBatch%s(sess *gobatis.Session, models []%s) (int64, int64, error) {", modelName, modelName))
159+
builder.WriteString(common.Newline())
160+
161+
builder.WriteString(common.ColumnSpace())
162+
builder.WriteString("var ret int64")
163+
builder.WriteString(common.Newline())
164+
165+
builder.WriteString(common.ColumnSpace())
166+
builder.WriteString(fmt.Sprintf(`runner := sess.Insert("insertBatch%s").Param(models)`, modelName))
167+
builder.WriteString(common.Newline())
168+
169+
builder.WriteString(common.ColumnSpace())
170+
builder.WriteString(`err := runner.Result(&ret)`)
171+
builder.WriteString(common.Newline())
172+
173+
builder.WriteString(common.ColumnSpace())
174+
builder.WriteString(`id := runner.LastInsertId()`)
175+
builder.WriteString(common.Newline())
176+
177+
builder.WriteString(common.ColumnSpace())
178+
builder.WriteString("return ret, id, err")
179+
builder.WriteString(common.Newline())
180+
181+
builder.WriteString("}")
182+
builder.WriteString(common.Newline())
183+
builder.WriteString(common.Newline())
184+
//insert batch end
185+
157186
//update
158187
builder.WriteString(fmt.Sprintf("func Update%s(sess *gobatis.Session, model %s) (int64, error) {", modelName, modelName))
159188
builder.WriteString(common.Newline())

gen_xml.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,48 @@ func buildMapper(builder *strings.Builder, config Config, tableName string, mode
180180
builder.WriteString(common.Newline())
181181
//insert end
182182

183+
//insert batch
184+
builder.WriteString(common.ColumnSpace())
185+
builder.WriteString(fmt.Sprintf("<insert id=\"insertBatch%s\">", modelName))
186+
builder.WriteString(common.Newline())
187+
builder.WriteString(common.ColumnSpace())
188+
builder.WriteString(common.ColumnSpace())
189+
builder.WriteString(fmt.Sprintf("INSERT INTO %s (%s)", tableName, columns))
190+
builder.WriteString(common.Newline())
191+
builder.WriteString(common.ColumnSpace())
192+
builder.WriteString(common.ColumnSpace())
193+
builder.WriteString("VALUES")
194+
builder.WriteString(common.Newline())
195+
196+
builder.WriteString(common.ColumnSpace())
197+
builder.WriteString(common.ColumnSpace())
198+
builder.WriteString(`<foreach item="item" index="index" collection="{0}" open="" separator="," close="">`)
199+
builder.WriteString(common.Newline())
200+
201+
builder.WriteString(common.ColumnSpace())
202+
builder.WriteString(common.ColumnSpace())
203+
builder.WriteString(common.ColumnSpace())
204+
builder.WriteString("(")
205+
for i := range model {
206+
builder.WriteString(fmt.Sprintf("#{item.%s}", common.Column2DynamicName(modelName, model[i].ColumnName)))
207+
if i < len(model)-1 {
208+
builder.WriteString(",")
209+
}
210+
}
211+
builder.WriteString(")")
212+
builder.WriteString(common.Newline())
213+
214+
builder.WriteString(common.ColumnSpace())
215+
builder.WriteString(common.ColumnSpace())
216+
builder.WriteString(`</foreach>`)
217+
builder.WriteString(common.Newline())
218+
219+
builder.WriteString(common.ColumnSpace())
220+
builder.WriteString("</insert>")
221+
builder.WriteString(common.Newline())
222+
builder.WriteString(common.Newline())
223+
//insert end
224+
183225
//update
184226
builder.WriteString(common.ColumnSpace())
185227
builder.WriteString(fmt.Sprintf("<update id=\"update%s\">", modelName))

0 commit comments

Comments
 (0)