Skip to content

Commit dedba6e

Browse files
committed
增加template insertBatch语句生成
1 parent d5c0d84 commit dedba6e

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

gen_template.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,28 @@ func buildTmplMapper(builder *strings.Builder, config Config, tableName string,
7676
builder.WriteString(common.Newline())
7777
builder.WriteString(common.Newline())
7878

79+
//insertBatch
80+
builder.WriteString(fmt.Sprintf(`{{define "insertBatch%s"}}`, modelName))
81+
builder.WriteString(common.Newline())
82+
83+
builder.WriteString(`{{$size := len . | add -1}}`)
84+
builder.WriteString(common.Newline())
85+
86+
builder.WriteString(fmt.Sprintf(`INSERT INTO %s(%s)`, tableName, columns))
87+
builder.WriteString(common.Newline())
88+
89+
builder.WriteString("VALUES {{range $i, $v := .}}")
90+
builder.WriteString(common.Newline())
91+
92+
builder.WriteString(genTmplRangeValues(modelName, model))
93+
94+
builder.WriteString(`{{end}}`)
95+
builder.WriteString(common.Newline())
96+
97+
builder.WriteString(`{{end}}`)
98+
builder.WriteString(common.Newline())
99+
builder.WriteString(common.Newline())
100+
79101
//update
80102
builder.WriteString(fmt.Sprintf(`{{define "update%s"}}`, modelName))
81103
builder.WriteString(common.Newline())
@@ -170,6 +192,29 @@ func genTmplValues(modelName string, model []common.ModelInfo) string {
170192
return builder.String()
171193
}
172194

195+
func genTmplRangeValues(modelName string, model []common.ModelInfo) string {
196+
builder := strings.Builder{}
197+
198+
builder.WriteString(`(`)
199+
size := len(model)
200+
for i := range model {
201+
if sqlType2GoMap[model[i].DataType] == "string" {
202+
builder.WriteString(fmt.Sprintf("'{{$v.%s}}'", common.Column2Modelfield(model[i].ColumnName)))
203+
} else {
204+
builder.WriteString(fmt.Sprintf("{{$v.%s}}", common.Column2Modelfield(model[i].ColumnName)))
205+
}
206+
207+
size--
208+
if size > 0 {
209+
builder.WriteString(", ")
210+
}
211+
}
212+
213+
builder.WriteString(`){{if lt $i $size}},{{end}}`)
214+
builder.WriteString(common.Newline())
215+
return builder.String()
216+
}
217+
173218
func getTmplCond(ctype string) string {
174219
return sqlType2IfCondMap[ctype]
175220
}

0 commit comments

Comments
 (0)