Gorm-Plus ist ein GORM-Verbesserungstool. Es bietet Entwicklern Verbesserungen außerhalb des Boxs, während die ursprünglichen Merkmale von GORM beibehalten werden. Durch die Vereinfachung des Entwicklungsprozesses und zur Verbesserung der Effizienz bringt es Entwicklern eine unvergleichliche Entwicklungserfahrung. Wenn Sie ein Tool ausprobieren möchten, das die Entwicklung einfach und effizient macht, ist Gorm-Plus eine Option, die Sie nicht verpassen können.
Derzeit gibt es eine Users mit der folgenden Tabellenstruktur:
CREATE TABLE ` users ` (
` id ` bigint NOT NULL AUTO_INCREMENT,
` username ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL ,
` password ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL ,
` address ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL ,
` age ` bigint DEFAULT NULL ,
` phone ` varchar ( 11 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL ,
` score ` bigint DEFAULT NULL ,
` dept ` varchar ( 20 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL ,
` created_at ` datetime( 3 ) DEFAULT NULL ,
` updated_at ` datetime( 3 ) DEFAULT NULL ,
PRIMARY KEY ( ` id ` )
) ENGINE = InnoDB AUTO_INCREMENT = 407 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
Die entsprechenden Daten sind wie folgt:
INSERT INTO ` users ` ( ` username ` , ` password ` , ` address ` , ` age ` , ` phone ` , ` score ` , ` dept ` , ` created_at ` , ` updated_at ` )
VALUES
( '张三' , ' password1 ' , '地址1 ' , 25 , ' 12345678901 ' , 80 , '部门1 ' , NOW(), NOW()),
( '李四' , ' password2 ' , '地址2 ' , 30 , ' 12345678902 ' , 90 , '部门2 ' , NOW(), NOW()),
( '王五' , ' password3 ' , '地址3 ' , 35 , ' 12345678903 ' , 70 , '部门1 ' , NOW(), NOW()),
( '赵六' , ' password4 ' , '地址4 ' , 28 , ' 12345678904 ' , 85 , '部门2 ' , NOW(), NOW()),
( '钱七' , ' password5 ' , '地址5 ' , 32 , ' 12345678905 ' , 75 , '部门1 ' , NOW(), NOW());
Laden Sie Gorm-plus herunter
go get github . com / acmestack / gorm - plus package main
import (
"github.com/acmestack/gorm-plus/gplus"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"time"
)
type User struct {
ID int64
Username string
Password string
Address string
Age int
Phone string
Score int
Dept string
CreatedAt time. Time
UpdatedAt time. Time
}
var gormDb * gorm. DB
func init () {
dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
var err error
gormDb , err = gorm . Open ( mysql . Open ( dsn ), & gorm. Config {
Logger : logger . Default . LogMode ( logger . Info ),
})
if err != nil {
log . Println ( err )
}
// 初始化gplus
gplus . Init ( gormDb )
}
func main () {
users , resultDb := gplus. SelectList [ User ]( nil )
log . Println ( "error:" , resultDb . Error )
log . Println ( "RowsAffected:" , resultDb . RowsAffected )
for _ , user := range users {
log . Println ( "user:" , user )
}
}Konsolenausgabe:
2023 / 06 / 01 17 : 48 : 19 error : < nil >
2023 / 06 / 01 17 : 48 : 19 RowsAffected : 5
2023 / 06 / 01 17 : 48 : 19 user : & { 1 张三 password1 地址1 25 12345678901 80 部门1 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST }
2023 / 06 / 01 17 : 48 : 19 user : & { 2 李四 password2 地址2 30 12345678902 90 部门2 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST }
2023 / 06 / 01 17 : 48 : 19 user : & { 3 王五 password3 地址3 35 12345678903 70 部门1 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST }
2023 / 06 / 01 17 : 48 : 19 user : & { 4 赵六 password4 地址4 28 12345678904 85 部门2 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST }
2023 / 06 / 01 17 : 48 : 19 user : & { 5 钱七 password5 地址5 32 12345678905 75 部门1 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST 2023 - 06 - 01 17 : 48 : 11 + 0 800 CST }Alle Abfragefunktionen einer einzelnen Tabelle sind nur eine Codezeile abgeschlossen.
gplus.SelectList(gplus.BuildQuery[User](queryParams))Beispiel:
func main () {
http.HandleFunc( " / " , handleRequest)
http.ListenAndServe( " :8080 " , nil)
}
func handleRequest(w http.ResponseWriter, r * http.Request) {
queryParams := r.URL.Query ()
list, _ := gplus.SelectList(gplus.BuildQuery[User](queryParams))
marshal, _ := json.Marshal(list)
w.Write(marshal)
}Angenommen, wir möchten den Benutzer abfragen, dessen Benutzername Zhangsan ist
http://localhost:8080 ? q=username=zhangsanAngenommen, wir wollen den Benutzernamen Benutzernamen Zhang abfragen
http://localhost:8080 ? q=username~ > =zhangAngenommen, wir möchten Benutzer mit einem Alter von mehr als 20 befragen
http://localhost:8080 ? q=age > 20Angenommen, wir möchten Benutzer abfragen, deren Benutzername Zhagnsan gleich ist und das Passwort gleich 123456 ist
http://localhost:8080 ? q=username=zhangsan & q=password=123456Angenommen, wir möchten Benutzer abfragen, deren Benutzername Zhagnsan gleich ist und das Passwort gleich 123456 ist
http://localhost:8080 ? q=username=zhangsan & q=password=123456Nehmen wir an, wir möchten den Benutzer abfragen, dessen Benutzername Zhagnsan gleich ist, oder Ussename entspricht Lisi
Sie können eine Gruppierungs- und GCond -bedingte Abfrage hinzufügen, um sie zu implementieren
http://localhost:8080 ? q=A.username=zhangsan & q=B.username=lisi & gcond=A | BWir brauchen nur eine Codezeile für alle einzelnen Tabellenabfragen.
Aus den obigen Schritten können wir sehen, dass die Integration Gorm-Plus sehr einfach ist. Fügen Sie einfach eine Codezeile hinzu, nachdem Sie Gorm gplus.Init(gormDb) initialisiert haben
Es ist bereit zu benutzen. Darüber hinaus ist es einfach, Gorm-Plus zu verwenden, und die Listenabfrage kann mit nur einer Codezeile abgeschlossen werden.
Die Kraft von Gorm-Plus ist jedoch viel mehr als das.
Weitere Dokumente finden Sie unter: https://github.com/acmestack/gorm-plus/wiki
WeChat hinzufügen: Afumubit, Anmerkung: GPLUS