From cfad36ea0b329e50f26bd995bab401282f406e55 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 30 Jun 2018 23:12:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgdb=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AESave=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/database/gdb/gdb_base.go | 16 ++++++++++++---- g/database/gdb/gdb_transaction.go | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/g/database/gdb/gdb_base.go b/g/database/gdb/gdb_base.go index dbaba6c1f..48817a5b4 100644 --- a/g/database/gdb/gdb_base.go +++ b/g/database/gdb/gdb_base.go @@ -283,7 +283,8 @@ func (db *Db) batchInsert(table string, list List, batch int, option uint8) (sql keys = append(keys, k) values = append(values, "?") } - var kstr = db.charl + strings.Join(keys, db.charl + "," + db.charr) + db.charr + keyStr := db.charl + strings.Join(keys, db.charl + "," + db.charr) + db.charr + valueHolderStr := "(" + strings.Join(values, ",") + ")" // 操作判断 operation := db.getInsertOperationByOption(option) updatestr := "" @@ -299,19 +300,26 @@ func (db *Db) batchInsert(table string, list List, batch int, option uint8) (sql for _, k := range keys { params = append(params, list[i][k]) } - bvalues = append(bvalues, "(" + strings.Join(values, ",") + ")") + bvalues = append(bvalues, valueHolderStr) if len(bvalues) == batch { - r, err := db.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", operation, db.charl, table, db.charr, kstr, strings.Join(bvalues, ","), updatestr), params...) + r, err := db.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", + operation, db.charl, table, db.charr, keyStr, strings.Join(bvalues, ","), + updatestr), + params...) if err != nil { return result, err } result = r + params = params[:0] bvalues = bvalues[:0] } } // 处理最后不构成指定批量的数据 if len(bvalues) > 0 { - r, err := db.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", operation, db.charl, table, db.charr, kstr, strings.Join(bvalues, ","), updatestr), params...) + r, err := db.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", + operation, db.charl, table, db.charr, keyStr, strings.Join(bvalues, ","), + updatestr), + params...) if err != nil { return result, err } diff --git a/g/database/gdb/gdb_transaction.go b/g/database/gdb/gdb_transaction.go index 9014ba6fc..64023107d 100644 --- a/g/database/gdb/gdb_transaction.go +++ b/g/database/gdb/gdb_transaction.go @@ -218,7 +218,8 @@ func (tx *Tx) batchInsert(table string, list List, batch int, option uint8) (sql keys = append(keys, k) values = append(values, "?") } - var kstr = tx.db.charl + strings.Join(keys, tx.db.charl + "," + tx.db.charr) + tx.db.charr + keyStr := tx.db.charl + strings.Join(keys, tx.db.charl + "," + tx.db.charr) + tx.db.charr + valueHolderStr := "(" + strings.Join(values, ",") + ")" // 操作判断 operation := tx.db.getInsertOperationByOption(option) updatestr := "" @@ -234,19 +235,26 @@ func (tx *Tx) batchInsert(table string, list List, batch int, option uint8) (sql for _, k := range keys { params = append(params, list[i][k]) } - bvalues = append(bvalues, "(" + strings.Join(values, ",") + ")") + bvalues = append(bvalues, valueHolderStr) if len(bvalues) == batch { - r, err := tx.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", operation, tx.db.charl, table, tx.db.charr, kstr, strings.Join(bvalues, ","), updatestr), params...) + r, err := tx.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", + operation, tx.db.charl, table, tx.db.charr, keyStr, strings.Join(bvalues, ","), + updatestr), + params...) if err != nil { return result, err } result = r + params = params[:0] bvalues = bvalues[:0] } } // 处理最后不构成指定批量的数据 if len(bvalues) > 0 { - r, err := tx.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", operation, tx.db.charl, table, tx.db.charr, kstr, strings.Join(bvalues, ","), updatestr), params...) + r, err := tx.Exec(fmt.Sprintf("%s INTO %s%s%s(%s) VALUES%s %s", + operation, tx.db.charl, table, tx.db.charr, kstr, strings.Join(bvalues, ","), + updatestr), + params...) if err != nil { return result, err }