From dde9b6f74eef9df47a579d37e2e1c6309924da5c Mon Sep 17 00:00:00 2001 From: zhoujie Date: Thu, 19 Sep 2024 14:11:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8E=BB=E6=8E=89=E4=BA=86=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=9F=A5=E8=AF=A2=E6=97=B6=EF=BC=8C=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E7=9A=84=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- mapping.go | 10 +++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 631fbe3..8c3e4d4 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ INSERT INTO ### 查询映射 -- 示例 ```go +// 如果没有结果,会返回 sql.ErrNoRows func QueryOne(db *sql.DB) (*User,error){ tdMapper := NewMapper() @@ -89,8 +90,7 @@ func QueryOne(db *sql.DB) (*User,error){ return &user, nil } -// 如果查询结果数量为0,则返回 sql.ErrNoRows -// var ErrNoRows = errors.New("sql: no rows in result set") +// 如果查询结果数量为0,不会返回错误 func QueryAll(db *sql.DB)([]*User, error) { tdMapper := NewMapper() diff --git a/mapping.go b/mapping.go index 005fd81..6d2d32b 100644 --- a/mapping.go +++ b/mapping.go @@ -247,10 +247,6 @@ func (b *Mapper) ScanRowsWithContext(ctx context.Context, target any, rows *sql. // 将新实例添加到slice中 vf.Set(reflect.Append(vf, newStruct)) } - - if vf.Len() == 0 { // 如果slice为空,返回 sql.ErrNoRows - return sql.ErrNoRows - } return nil default: return errors.New("target must be a pointer to a struct or a slice of structs") @@ -277,11 +273,11 @@ func (b *Mapper) scanRow(target reflect.Value, rows *sql.Rows) error { dest := make([]interface{}, len(columns)) for i, colName := range columns { // 拿到缓存的字段索引 - if idx, ok := mate.DBName2IndexCache[colName]; ok { - dest[i] = target.FieldByIndex(idx).Addr().Interface() - } else { + idx, ok := mate.DBName2IndexCache[colName] + if !ok { return fmt.Errorf("no corresponding field found for column %s", colName) } + dest[i] = target.FieldByIndex(idx).Addr().Interface() } // 扫描数据