Gorm-plus เป็นเครื่องมือเพิ่มประสิทธิภาพของ Gorm ให้การปรับปรุงนอกกรอบนักพัฒนาในขณะที่ยังคงรักษาคุณสมบัติดั้งเดิมของ Gorm ด้วยการทำให้กระบวนการพัฒนาง่ายขึ้นและปรับปรุงประสิทธิภาพทำให้ประสบการณ์การพัฒนาที่ไม่มีใครเทียบได้กับนักพัฒนา หากคุณกระตือรือร้นที่จะลองใช้เครื่องมือที่ทำให้การพัฒนาง่ายและมีประสิทธิภาพ Gorm-Plus จะเป็นตัวเลือกที่คุณไม่ควรพลาด
ขณะนี้มีตาราง Users ที่มีโครงสร้างตารางต่อไปนี้:
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;
ข้อมูลที่เกี่ยวข้องมีดังนี้:
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());
ดาวน์โหลด 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 )
}
}เอาต์พุตคอนโซล:
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 }ฟังก์ชั่นการสืบค้นทั้งหมดของตารางเดียวจะเสร็จสมบูรณ์ด้วยรหัสเพียงบรรทัดเดียว
gplus.SelectList(gplus.BuildQuery[User](queryParams))ตัวอย่าง:
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)
}สมมติว่าเราต้องการสอบถามผู้ใช้ที่มีชื่อผู้ใช้คือจาง
http://localhost:8080 ? q=username=zhangsanสมมติว่าเราต้องการสอบถามชื่อผู้ใช้ชื่อจาง
http://localhost:8080 ? q=username~ > =zhangสมมติว่าเราต้องการสอบถามผู้ใช้ที่มีอายุมากกว่า 20 ปี
http://localhost:8080 ? q=age > 20สมมติว่าเราต้องการสอบถามผู้ใช้ที่มีชื่อผู้ใช้เท่ากับ Zhagnsan และรหัสผ่านเท่ากับ 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456สมมติว่าเราต้องการสอบถามผู้ใช้ที่มีชื่อผู้ใช้เท่ากับ Zhagnsan และรหัสผ่านเท่ากับ 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456สมมติว่าเราต้องการสอบถามผู้ใช้ที่มีชื่อผู้ใช้เท่ากับ Zhagnsan หรือ Usename เท่ากับ Lisi
คุณสามารถเพิ่มแบบสอบถามแบบจัดกลุ่มและ GCOND เพื่อนำไปใช้งานได้
http://localhost:8080 ? q=A.username=zhangsan & q=B.username=lisi & gcond=A | Bเราต้องการรหัสหนึ่งบรรทัดสำหรับการสืบค้นตารางเดียวทั้งหมด
จากขั้นตอนข้างต้นเราจะเห็นว่าการรวม Gorm-Plus นั้นง่ายมาก เพียงเพิ่มบรรทัดของรหัสหลังจากเริ่มต้น Gorm gplus.Init(gormDb)
พร้อมใช้งาน ไม่เพียงเท่านั้นมันยังใช้ Gorm-Plus ได้ง่ายและรายการเคียวรีสามารถทำให้เสร็จได้ด้วยรหัสเดียวเพียงบรรทัดเดียว
อย่างไรก็ตามพลังของ Gorm-Plus นั้นยิ่งกว่านั้น
สำหรับเอกสารเพิ่มเติมโปรดตรวจสอบ: https://github.com/acmestack/gorm-plus/wiki
เพิ่ม wechat: afumubit, หมายเหตุ: gplus