feat: 去掉了批量查询时,结果为空的报错

This commit is contained in:
周杰 2024-09-19 14:11:17 +08:00
parent 1f9ff72824
commit dde9b6f74e
2 changed files with 5 additions and 9 deletions

View File

@ -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()

View File

@ -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()
}
// 扫描数据