@@ -10,14 +10,18 @@ funsql
1010目前已经支持大部分的sql操作语句。
1111
1212funsql拼装后的结果包含sql语句和绑定参数两部分,可以非常方便的将这两个参数传入标准sql包进行执行。
13+
1314增加了scan支持,可将标准库sql包返回的rows直接绑定到自定义的结构体切片内。
1415
16+ ## 快速开始
1517``` go
16- sql,binds,err := funsql.Table (" users" ).Where (" age" ," >" ,10 ).Select ()
17- // 输出
18+ sqlStr,args,err := funsql.Table (" users" ).Where (" age" ," >" ,10 ).Select ()
19+ row,err := sql.Query (sqlStr,args...)
20+ // 输出sql 与 args 可以直接作为sql标准库Query()的入参。
1821// sql: select * from users where age > ?
1922// binds: []int{10,}
2023// err: nil
24+
2125```
2226## 入口函数 Table()
2327为了简化语句,每次sql拼装都必须首先执行入口函数。入口函数会返回* FunBuilder实例作为后续链式操作de基础对象。
@@ -48,29 +52,6 @@ funsql 使用链式调用进行sql拼装,但是最终都必须以 **结果函
4852funsql.Table (" users" ).Select (" name" ," age" )
4953```
5054
51- ## Scan使用
52- Scan支持二维结构体切片与一维切片,适用于查询多条多字段数据和多条单个字段数据。结构体可选使用tag fs作为字段标识,不存在tag fs时使用小写形式的字段名。
53-
54- ### 多条多字段使用
55- ``` go
56- type Order struct {
57- ID int64 ` fs:"id"`
58- OrderNo string ` fs:"order_no"`
59- }
60- orders := make ([]Order , 0 )
61- err = Scan (rows, &orders)
62-
63- ```
64-
65- ### 多条单个字段
66-
67- ``` go
68- orderIDs := make ([]int64 , 0 )
69- err = Scan (rows, &orderIDs)
70-
71- ```
72-
73-
7455## Select
7556在调用Select不传入操作时默认为 * 。当然大部分时候并不希望返回数据库表的所有列,此时可以指定需要的字段即可。
7657字段名必须为字符串类型。
@@ -181,6 +162,28 @@ funsql.Table("users").WhereNotBetween("age","=",10).OrWhere("age","=",20).
181162GroupBy (" sex" ," age" ).Having (" age" ," >" ,10 ).Limit (5 ).Offset (3 ).Select ()
182163```
183164
165+ ## Scan使用
166+ Scan支持二维结构体切片与一维切片,适用于查询多条多字段数据和多条单个字段数据。结构体可选使用tag fs作为字段标识,不存在tag fs时使用小写形式的字段名。
167+
168+ ### 多条多字段使用
169+ ``` go
170+ type Order struct {
171+ ID int64 ` fs:"id"`
172+ OrderNo string ` fs:"order_no"`
173+ }
174+ orders := make ([]Order , 0 )
175+ err = Scan (rows, &orders)
176+
177+ ```
178+
179+ ### 多条单个字段
180+
181+ ``` go
182+ orderIDs := make ([]int64 , 0 )
183+ err = Scan (rows, &orderIDs)
184+
185+ ```
186+
184187
185188
186189
0 commit comments