This commit is contained in:
oneao committed 2025-11-21 17:27:44 +08:00
1 parent bb780a42ab
commit d3145e3dc5
19 files changed
+15364 -416

No files matched your search

@@ -3,6 +3,8 @@ package db
import (
"fmt"
"strings"
"base-go-v2/internal/utils/mapx"
)
// ---------------- 内部辅助函数 ----------------
@@ -42,10 +44,7 @@ func UpdateOne(table string, idColumn string, id interface{}, data map[string]in
res, err := tx.Exec(sql, values...)
if err != nil {
err := tx.Rollback()
if err != nil {
return 0, err
}
_ = tx.Rollback()
return 0, err
}
@@ -56,8 +55,8 @@ func UpdateOne(table string, idColumn string, id interface{}, data map[string]in
return res.RowsAffected()
}
// UpdateBatch 批量更新,dataList 中每个 map 必须包含主键 idColumn
func UpdateBatch(table string, idColumn string, dataList []map[string]interface{}) (int64, error) {
// UpdateBatch 批量更新,dataList 中每个 mapx.M 必须包含主键 idColumn
func UpdateBatch(table string, idColumn string, dataList []mapx.M) (int64, error) {
if len(dataList) == 0 {
return 0, nil
}
@@ -68,30 +67,36 @@ func UpdateBatch(table string, idColumn string, dataList []map[string]interface{
}
total := int64(0)
for _, data := range dataList {
idValue, ok := data[idColumn]
for _, item := range dataList {
idValue, ok := item[idColumn]
if !ok {
tx.Rollback()
_ = tx.Rollback()
return 0, fmt.Errorf("缺少主键列 %s", idColumn)
}
// 移除主键列,否则会重复在 SET 中出现
delete(data, idColumn)
// 将 mapx.M 转为 map[string]interface{},并移除主键
data := make(map[string]interface{})
for k, v := range item {
if k != idColumn {
data[k] = v
}
}
sql, values := buildUpdateSQL(table, data, idColumn)
values = append(values, idValue)
res, err := tx.Exec(sql, values...)
if err != nil {
tx.Rollback()
_ = tx.Rollback()
return 0, err
}
rows, err := res.RowsAffected()
if err != nil {
tx.Rollback()
_ = tx.Rollback()
return 0, err
}
total += rows
}