From 8bbc5afc411d5f4afe8eb6ea7545827c83173f57 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 30 Jun 2018 22:52:39 +0800 Subject: [PATCH 1/3] =?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 | 2 +- g/database/gdb/gdb_transaction.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/g/database/gdb/gdb_base.go b/g/database/gdb/gdb_base.go index cc02d4518..dbaba6c1f 100644 --- a/g/database/gdb/gdb_base.go +++ b/g/database/gdb/gdb_base.go @@ -290,7 +290,7 @@ func (db *Db) batchInsert(table string, list List, batch int, option uint8) (sql if option == OPTION_SAVE { var updates []string for _, k := range keys { - updates = append(updates, fmt.Sprintf("%s=VALUES(%s)", db.charl, k, db.charr, k)) + updates = append(updates, fmt.Sprintf("%s%s%s=VALUES(%s)", db.charl, k, db.charr, k)) } updatestr = fmt.Sprintf(" ON DUPLICATE KEY UPDATE %s", strings.Join(updates, ",")) } diff --git a/g/database/gdb/gdb_transaction.go b/g/database/gdb/gdb_transaction.go index 4cba7163e..9014ba6fc 100644 --- a/g/database/gdb/gdb_transaction.go +++ b/g/database/gdb/gdb_transaction.go @@ -225,7 +225,7 @@ func (tx *Tx) batchInsert(table string, list List, batch int, option uint8) (sql if option == OPTION_SAVE { var updates []string for _, k := range keys { - updates = append(updates, fmt.Sprintf("%s=VALUES(%s)", tx.db.charl, k, tx.db.charr, k)) + updates = append(updates, fmt.Sprintf("%s%s%s=VALUES(%s)", tx.db.charl, k, tx.db.charr, k)) } updatestr = fmt.Sprintf(" ON DUPLICATE KEY UPDATE %s", strings.Join(updates, ",")) } From 457ba1ec8d6eefb583170245e07c5eda834bee27 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 30 Jun 2018 23:12:37 +0800 Subject: [PATCH 2/3] =?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 } From 701b496bff5a255072a37fdc1cda098c35711e25 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 30 Jun 2018 23:14:54 +0800 Subject: [PATCH 3/3] =?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_transaction.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/g/database/gdb/gdb_transaction.go b/g/database/gdb/gdb_transaction.go index 64023107d..365bbb92c 100644 --- a/g/database/gdb/gdb_transaction.go +++ b/g/database/gdb/gdb_transaction.go @@ -252,7 +252,7 @@ func (tx *Tx) batchInsert(table string, list List, batch int, option uint8) (sql // 处理最后不构成指定批量的数据 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, ","), + operation, tx.db.charl, table, tx.db.charr, keyStr, strings.Join(bvalues, ","), updatestr), params...) if err != nil {