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)
}사용자 이름이 Zhangsan 인 사용자를 쿼리하고 싶다고 가정합니다.
http://localhost:8080 ? q=username=zhangsan사용자 이름 사용자 이름 Zhang을 쿼리하려고한다고 가정하십시오
http://localhost:8080 ? q=username~ > =zhang20 세 이상의 사용자를 쿼리하고 싶다고 가정 해
http://localhost:8080 ? q=age > 20사용자 이름이 Zhagnsan과 동일한 사용자를 쿼리하고 Password가 123456과 같은 사용자를 쿼리하고 싶다고 가정합니다.
http://localhost:8080 ? q=username=zhangsan & q=password=123456사용자 이름이 Zhagnsan과 동일한 사용자를 쿼리하고 Password가 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를 추가하십시오