@@ -10,30 +10,37 @@ import (
10
10
//connect mysql db
11
11
var db , _ = orm .OpenMysql ("user:password@tcp(127.0.0.1:3306)/mydb?parseTime=true&charset=utf8mb4&loc=Asia%2FShanghai" )
12
12
13
- //user table model
14
- var UserTable = orm .NewQuery (User {}, db )
13
+ //query user
14
+ var UserQuery = orm .NewQuery (User {})
15
15
16
16
type User struct {
17
17
Id int `json:"id"`
18
18
Name string `json:"name"`
19
19
}
20
20
21
- func (User ) TableName () string {
22
- return "user"
21
+ func (User ) Connection () [] * sql. DB {
22
+ return [] * sql. DB { db }
23
23
}
24
24
func (User ) DatabaseName () string {
25
25
return "mydb"
26
26
}
27
+ func (User ) TableName () string {
28
+ return "user"
29
+ }
27
30
28
31
//user table model
29
- var OrderTable = orm .NewQuery (Order {}, db )
32
+ var OrderQuery = orm .NewQuery (Order {})
30
33
31
34
type Order struct {
32
35
Id int `json:"id"`
33
36
UserId int `json:"user_id"`
34
37
OrderAmount int `json:"order_amount"`
35
38
}
36
39
40
+ func (o Order ) Connection () []* sql.DB {
41
+ return []* sql.DB {db }
42
+ }
43
+
37
44
func (Order ) TableName () string {
38
45
return "order"
39
46
}
@@ -44,88 +51,88 @@ func (Order) DatabaseName() string {
44
51
func main () {
45
52
{
46
53
//create db table from go struct
47
- _ , _ = orm .CreateTableFromStruct (UserTable )
54
+ _ , _ = orm .CreateTableFromStruct (UserQuery )
48
55
//create go struct from db table
49
- _ = orm .CreateStructFromTable (UserTable )
56
+ _ = orm .CreateStructFromTable (UserQuery )
50
57
}
51
58
52
59
//query select
53
60
{
54
61
//get first user (name='join') as struct
55
- user , query := UserTable .Where (& UserTable .T .Name , "john" ).Get ()
62
+ user , query := UserQuery .Where (& UserQuery .T .Name , "john" ).Get ()
56
63
fmt .Println (user , query .Sql (), query .Error ())
57
64
58
65
//get users by primary ids
59
- users , query := UserTable .Gets (1 , 2 , 3 )
66
+ users , query := UserQuery .Gets (1 , 2 , 3 )
60
67
fmt .Println (users , query .Sql (), query .Error ())
61
68
62
69
//get user rows as []map[string]interface
63
- rows , query := UserTable .Limit (5 ).GetRows ()
70
+ rows , query := UserQuery .Limit (5 ).GetRows ()
64
71
fmt .Println (rows , query .Sql (), query .Error ())
65
72
66
73
//get users count(*)
67
- count , query := UserTable .GetCount ()
74
+ count , query := UserQuery .GetCount ()
68
75
fmt .Println (count , query .Sql (), query .Error ())
69
76
70
77
//get user names map key by id
71
78
var userNameKeyById map [int ]string
72
- UserTable .Select (& UserTable .T .Id , & UserTable .T .Name ).GetTo (& userNameKeyById )
79
+ UserQuery .Select (& UserQuery .T .Id , & UserQuery .T .Name ).GetTo (& userNameKeyById )
73
80
74
81
//get users map key by name
75
82
var usersMapkeyByName map [string ][]User
76
- UserTable .Select (& UserTable .T .Name , UserTable .AllCols ()).GetTo (& usersMapkeyByName )
83
+ UserQuery .Select (& UserQuery .T .Name , UserQuery .AllCols ()).GetTo (& usersMapkeyByName )
77
84
78
85
//select rank by column
79
- OrderTable .Where (& OrderTable .T .UserId , 1 ).
80
- Select (OrderTable .AllCols ()).
81
- SelectRank (& OrderTable .T .OrderAmount , "order_amount_rank" ).GetRows ()
86
+ OrderQuery .Where (& OrderQuery .T .UserId , 1 ).
87
+ Select (OrderQuery .AllCols ()).
88
+ SelectRank (& OrderQuery .T .OrderAmount , "order_amount_rank" ).GetRows ()
82
89
}
83
90
84
91
//query update and delete and insert
85
92
{
86
93
//update user set name="hello" where id=1
87
- UserTable .WherePrimary (1 ).Update (& UserTable .T .Name , "hello" )
94
+ UserQuery .WherePrimary (1 ).Update (& UserQuery .T .Name , "hello" )
88
95
89
96
//query delete
90
- UserTable .Delete (1 , 2 , 3 )
97
+ UserQuery .Delete (1 , 2 , 3 )
91
98
92
99
//query insert
93
- _ = UserTable .Insert (User {Name : "han" }).LastInsertId //insert one row and get id
100
+ _ = UserQuery .Insert (User {Name : "han" }).LastInsertId //insert one row and get id
94
101
95
102
//insert batch on duplicate key update name=values(name)
96
- _ = UserTable .InsertsIgnore ([]User {{Id : 1 , Name : "han" }, {Id : 2 , Name : "jen" }},
97
- []orm.UpdateColumn {{Column : & UserTable .T .Name , Val : & UserTable .T .Name }})
103
+ _ = UserQuery .InsertsIgnore ([]User {{Id : 1 , Name : "han" }, {Id : 2 , Name : "jen" }},
104
+ []orm.UpdateColumn {{Column : & UserQuery .T .Name , Val : & UserQuery .T .Name }})
98
105
}
99
106
100
107
//query join
101
108
{
102
- UserTable .Join (OrderTable .T , func (query orm.Query [User ]) orm.Query [User ] {
103
- return query .Where (& UserTable .T .Id , & OrderTable .T .UserId )
104
- }).Where (& OrderTable .T .OrderAmount , 100 ).
105
- Select (UserTable .AllCols ()).Gets ()
109
+ UserQuery .Join (OrderQuery .T , func (query orm.Query [User ]) orm.Query [User ] {
110
+ return query .Where (& UserQuery .T .Id , & OrderQuery .T .UserId )
111
+ }).Where (& OrderQuery .T .OrderAmount , 100 ).
112
+ Select (UserQuery .AllCols ()).Gets ()
106
113
}
107
114
{
108
115
//transaction
109
- _ = UserTable .Transaction (func (tx * sql.Tx ) error {
110
- newId := UserTable .UseTx (tx ).Insert (User {Name : "john" }).LastInsertId //insert
116
+ _ = UserQuery .Transaction (func (tx * sql.Tx ) error {
117
+ newId := UserQuery .UseTx (tx ).Insert (User {Name : "john" }).LastInsertId //insert
111
118
fmt .Println (newId )
112
119
return errors .New ("I want rollback" ) //rollback
113
120
})
114
121
}
115
122
116
123
{
117
124
//subquery
118
- subquery := UserTable .Where (& UserTable .T .Id , 1 ).SubQuery ()
125
+ subquery := UserQuery .Where (& UserQuery .T .Id , 1 ).SubQuery ()
119
126
120
127
//where in suquery
121
- UserTable .Where (& UserTable .T .Id , orm .WhereIn , subquery ).Gets ()
128
+ UserQuery .Where (& UserQuery .T .Id , orm .WhereIn , subquery ).Gets ()
122
129
123
130
//insert subquery
124
- UserTable .InsertSubquery (subquery , nil )
131
+ UserQuery .InsertSubquery (subquery , nil )
125
132
126
133
//join subquery
127
- UserTable .Join (subquery , func (query orm.Query [User ]) orm.Query [User ] {
128
- return query .Where (& UserTable .T .Id , orm .Raw ("sub.id" ))
134
+ UserQuery .Join (subquery , func (query orm.Query [User ]) orm.Query [User ] {
135
+ return query .Where (& UserQuery .T .Id , orm .Raw ("sub.id" ))
129
136
}).Gets ()
130
137
}
131
138
}
0 commit comments