This commit is contained in:
oneao committed 2026-04-24 22:37:52 +08:00
1 parent 46cbb2f50d
commit e3d765a9d4
15 files changed
+903 -190

No files matched your search

+13 -10
View File
@@ -34,7 +34,8 @@ func (c *Client) LoadData(
order = " ORDER BY " + orderBy
}
sql := fmt.Sprintf("SELECT %s FROM %s%s%s",
sql := fmt.Sprintf(
"SELECT %s FROM %s%s%s",
selectCols,
viewName,
where,
@@ -54,26 +55,25 @@ func (c *Client) LoadDataBySQL(
sql string,
args []any,
) ([]map[string]any, error) {
logger.FromCtx(ctx).Info("LoadDataBySQL",
zap.String("sql", sql),
zap.Any("args", args),
)
return c.query(ctx, sql, args...)
}
// ==========================
// 核心查询方法(已升级)
// ==========================
func (c *Client) query(ctx context.Context, sql string, args ...any) ([]map[string]any, error) {
sql = convertPlaceholder(sql)
rows, err := c.exec().Query(ctx, sql, args...)
rows, err := c.pool.Query(ctx, sql, args...)
if err != nil {
return nil, err
}
defer rows.Close()
// 获取字段名
fields := rows.FieldDescriptions()
result := make([]map[string]any, 0, 16)
@@ -86,19 +86,22 @@ func (c *Client) query(ctx context.Context, sql string, args ...any) ([]map[stri
row := make(map[string]any, len(values))
for i, f := range fields {
for i := range fields {
if i < len(values) {
row[string(f.Name)] = values[i]
row[string(fields[i].Name)] = values[i]
}
}
result = append(result, row)
}
return result, rows.Err()
if err := rows.Err(); err != nil {
return nil, err
}
return result, nil
}
// 高效 placeholder 转换
func convertPlaceholder(sql string) string {
var sb strings.Builder
sb.Grow(len(sql))