@@ -5,54 +5,36 @@ import (
55 "strings"
66)
77
8- // NewMySQLQuery new 实例
9- func NewMySQLQuery (querySQL string ) * Query {
8+ // NewQuery new 实例
9+ func NewQuery (querySQL string ) * Query {
1010 return & Query {
1111 query : querySQL ,
12- whereOr : []string {},
13- whereAnd : []string {},
14- argsOr : []interface {}{},
15- argsAnd : []interface {}{},
16- argsLimit : []interface {}{},
12+ whereStmt : []string {},
13+ whereArgs : []interface {}{},
14+ limitArgs : []interface {}{},
1715 }
1816}
1917
2018// Query 查询mysql数据库
2119type Query struct {
2220 query string
23- whereOr []string
24- whereAnd []string
25- argsOr []interface {}
26- argsAnd []interface {}
27- limit string
28- argsLimit []interface {}
21+ whereStmt []string
22+ whereArgs []interface {}
23+ limitStmt string
24+ limitArgs []interface {}
2925 desc string
3026}
3127
32- // AddOrArg 添加参数
33- func (q * Query ) AddOrArg (v ... interface {}) {
34- q .argsOr = append (q .argsOr , v ... )
35- }
36-
37- // AddOrWhere 添加Where语句
38- func (q * Query ) AddOrWhere (v ... string ) {
39- q .whereOr = append (q .whereOr , v ... )
40- }
41-
42- // AddAndArg 添加参数
43- func (q * Query ) AddAndArg (v ... interface {}) {
44- q .argsAnd = append (q .argsAnd , v ... )
45- }
46-
47- // AddAndWhere 添加Where语句
48- func (q * Query ) AddAndWhere (v ... string ) {
49- q .whereAnd = append (q .whereAnd , v ... )
28+ // Where 添加参数
29+ func (q * Query ) Where (stmt string , v ... interface {}) {
30+ q .whereStmt = append (q .whereStmt , stmt )
31+ q .whereArgs = append (q .whereArgs , v ... )
5032}
5133
5234// Limit 这周Limit
5335func (q * Query ) Limit (offset int64 , limit uint ) {
54- q .limit = "LIMIT ?,? "
55- q .argsLimit = append (q .argsLimit , offset , limit )
36+ q .limitStmt = "LIMIT ?,? "
37+ q .limitArgs = append (q .limitArgs , offset , limit )
5638}
5739
5840// Desc todo
@@ -61,31 +43,24 @@ func (q *Query) Desc(d string) {
6143}
6244
6345func (q * Query ) whereBuild () string {
64- if len (q .whereAnd ) == 0 && len (q .whereOr ) == 0 {
65- return ""
66- }
46+ return "WHERE " + strings .Join (q .whereStmt , " AND " ) + " "
47+ }
6748
68- where := []string {}
69- if len (q .whereAnd ) > 0 {
70- where = append (where , strings .Join (q .whereAnd , " AND " ))
71- }
72- if len (q .whereOr ) > 0 {
73- where = append (where , " ( " + strings .Join (q .whereOr , " OR " )+ " ) " )
74- }
49+ // WhereArgs where 语句的参数
50+ func (q * Query ) WhereArgs () []interface {} {
51+ return q .whereArgs
52+ }
7553
76- return "WHERE " + strings .Join (where , " AND " )
54+ // WhereStmt where条件列表
55+ func (q * Query ) WhereStmt () []string {
56+ return q .whereStmt
7757}
7858
7959// Build 组件SQL
80- func (q * Query ) Build () string {
81- return q .query + q .whereBuild () + q .desc + q .limit + ";"
82- }
60+ func (q * Query ) Build () (stmt string , args []interface {}) {
61+ stmt = q .query + " " + q .whereBuild () + q .desc + q .limitStmt + ";"
8362
84- // Args sql参数
85- func (q * Query ) Args () []interface {} {
86- args := []interface {}{}
87- args = append (args , q .argsAnd ... )
88- args = append (args , q .argsOr ... )
89- args = append (args , q .argsLimit ... )
90- return args
63+ args = append (args , q .whereArgs ... )
64+ args = append (args , q .limitArgs ... )
65+ return
9166}
0 commit comments