Gorm-plus est un outil d'amélioration du gorm. Il fournit aux développeurs des améliorations hors de la boîte tout en conservant les caractéristiques originales de Gorm. En simplifiant le processus de développement et en améliorant l'efficacité, il apporte une expérience de développement inégalée aux développeurs. Si vous êtes impatient d'essayer un outil qui rend le développement facile et efficace, Gorm-Plus sera une option que vous ne pouvez pas manquer.
Il existe actuellement une table Users avec la structure de table suivante:
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;
Les données correspondantes sont les suivantes:
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());
Télécharger Gorm-Plus
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 )
}
}Sortie de la console:
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 }Toutes les fonctions de requête d'une seule table sont remplies par une seule ligne de code.
gplus.SelectList(gplus.BuildQuery[User](queryParams))exemple:
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)
}Supposons que nous voulons interroger l'utilisateur dont le nom d'utilisateur est Zhangsan
http://localhost:8080 ? q=username=zhangsanSupposons que nous voulons interroger le nom d'utilisateur du nom d'utilisateur Zhang
http://localhost:8080 ? q=username~ > =zhangSupposons que nous voulons interroger les utilisateurs avec plus de 20
http://localhost:8080 ? q=age > 20Supposons que nous voulons interroger les utilisateurs dont le nom d'utilisateur est égal à Zhagnsan et que le mot de passe est égal à 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456Supposons que nous voulons interroger les utilisateurs dont le nom d'utilisateur est égal à Zhagnsan et que le mot de passe est égal à 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456Supposons que nous voulons interroger l'utilisateur dont le nom d'utilisateur est égal à Zhagnsan, ou usename est égal à Lisi
Vous pouvez ajouter une requête conditionnelle de regroupement et GCOND pour l'implémenter
http://localhost:8080 ? q=A.username=zhangsan & q=B.username=lisi & gcond=A | BNous n'avons besoin que d'une seule ligne de code pour toutes les requêtes de table unique.
À partir des étapes ci-dessus, nous pouvons voir que l'intégration Gorm-Plus est très simple. Ajoutez simplement une ligne de code après avoir initialisé Gorm gplus.Init(gormDb)
Il est prêt à l'emploi. Non seulement cela, il est également facile d'utiliser Gorm-Plus , et la requête de liste peut être complétée avec une seule ligne de code.
Cependant, le pouvoir de Gorm-Plus est bien plus que cela.
Pour plus de documents, veuillez vérifier: https://github.com/acmestack/gorm-plus/wiki
Ajouter WeChat: Afumubit, Remarque: GPLUS