-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccessdb.go
70 lines (56 loc) · 1.47 KB
/
accessdb.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
import (
"database/sql"
"fmt"
"time"
"github.com/didi/gendry/builder"
"github.com/didi/gendry/manager"
"github.com/didi/gendry/scanner"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dbName := "test"
user := "root"
password := "3dclobest"
host := "3dcloserver"
port := 3306
var db *sql.DB
var err error
db, err = manager.
New(dbName, user, password, host).
Set(
manager.SetCharset("utf8"),
manager.SetAllowCleartextPasswords(true),
manager.SetInterpolateParams(true),
manager.SetTimeout(1*time.Second),
manager.SetReadTimeout(1*time.Second)).
Port(port).Open(true)
where := map[string]interface{}{
"city in": []string{"beijing", "shanghai"},
"score": 5,
"age >": 35,
"address": builder.IsNotNull,
"_orderby": "bonus desc",
"_groupby": "department",
}
table := "person"
selectFields := []string{"name", "age", "sex"}
cond, values, err := builder.BuildSelect(table, where, selectFields)
//cond = SELECT name,age,sex FROM some_table WHERE (score=? AND city IN (?,?) AND age>? AND address IS NOT NULL) GROUP BY department ORDER BY bonus DESC
//values = []interface{}{"beijing", "shanghai", 5, 35}
rows, err := db.Query(cond, values...)
defer rows.Close()
type Person struct {
Name string `ddb:"name"`
Age int `ddb:"age"`
Sex int `ddb:"sex"`
}
var students []Person
err = scanner.Scan(rows, &students)
for _, student := range students {
fmt.Println(student)
}
if nil != err {
panic(err)
}
}