之前找过很多结果集封装都不是很好,所以自己封装了下。
strFirstToUpper 字符串首字母转化为大写
/**
* 封装结果集
*/
func RowResult(rows *sql.Rows) []interface{} {
//字典类型
//构造scanArgs、values两个数组,scanArgs的每个值指向values相应值的地址
columns, _ := rows.Columns()
values := make([]sql.RawBytes, len(columns))
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
var returnArrs []interface{}
for rows.Next() {
err := rows.Scan(scanArgs...)
if err != nil {
panic(err.Error())
}
var value string
relativJson := NewBeeMap()
for i, col := range values {
if col == nil {
value = ""
} else {
value = string(col)
}
if relativJson.Set(strFirstToUpper(columns[i]), value) {
continue
}
}
returnArrs = append(returnArrs, relativJson.bm)
}
return returnArrs
}
有疑问加站长微信联系(非本文作者)