GORM-PLUS adalah alat peningkatan gorm. Ini memberikan pengembang dengan perangkat tambahan di luar kotak sambil mempertahankan fitur asli Gorm. Dengan menyederhanakan proses pengembangan dan meningkatkan efisiensi, ini membawa pengalaman pengembangan yang tak tertandingi bagi pengembang. Jika Anda ingin mencoba alat yang membuat pengembangan menjadi mudah dan efisien, Gorm-Plus akan menjadi opsi yang tidak dapat Anda lewatkan.
Saat ini ada tabel Users dengan struktur tabel berikut:
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;
Data yang sesuai adalah sebagai berikut:
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());
Unduh 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 )
}
}Output Konsol:
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 }Semua fungsi kueri dari satu tabel diselesaikan hanya dengan satu baris kode.
gplus.SelectList(gplus.BuildQuery[User](queryParams))contoh:
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)
}Misalkan kita ingin meminta pengguna yang nama penggunanya adalah Zhangsan
http://localhost:8080 ? q=username=zhangsanMisalkan kita ingin menanyakan nama pengguna nama pengguna Zhang
http://localhost:8080 ? q=username~ > =zhangMisalkan kami ingin meminta pengguna dengan usia lebih dari 20
http://localhost:8080 ? q=age > 20Misalkan kami ingin meminta pengguna yang nama penggunanya sama dengan Zhagnsan dan kata sandi sama dengan 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456Misalkan kami ingin meminta pengguna yang nama penggunanya sama dengan Zhagnsan dan kata sandi sama dengan 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456Misalkan kita ingin meminta pengguna yang nama penggunanya sama dengan Zhagnsan, atau nama usen sama dengan Lisi
Anda dapat menambahkan kueri bersyarat pengelompokan dan gcond untuk mengimplementasikannya
http://localhost:8080 ? q=A.username=zhangsan & q=B.username=lisi & gcond=A | BKami hanya membutuhkan satu baris kode untuk semua kueri tabel tunggal.
Dari langkah-langkah di atas, kita dapat melihat bahwa mengintegrasikan Gorm-Plus sangat sederhana. Cukup tambahkan baris kode setelah menginisialisasi Gorm gplus.Init(gormDb)
Itu siap digunakan. Tidak hanya itu, juga mudah untuk menggunakan Gorm-Plus , dan kueri daftar dapat diselesaikan hanya dengan satu baris kode.
Namun, kekuatan Gorm-Plus jauh lebih dari itu.
Untuk dokumen lebih lanjut, silakan periksa: https://github.com/acmestack/gorm-plus/wiki
Tambahkan WeChat: Afumubit, Catatan: Gplus