Gorm-plus é uma ferramenta de aprimoramento do Gorm. Ele fornece aos desenvolvedores aprimoramentos prontos para a caixa, mantendo os recursos originais do Gorm. Ao simplificar o processo de desenvolvimento e melhorar a eficiência, traz uma experiência de desenvolvimento incomparável aos desenvolvedores. Se você estiver ansioso para experimentar uma ferramenta que torne o desenvolvimento fácil e eficiente, o Gorm-Plus será uma opção que você não pode perder.
Atualmente, existe uma tabela Users com a seguinte estrutura de tabela:
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;
Os dados correspondentes são os seguintes:
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());
Baixe 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 )
}
}Saída do 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 }Todas as funções de consulta de uma única tabela são concluídas por apenas uma linha de código.
gplus.SelectList(gplus.BuildQuery[User](queryParams))exemplo:
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)
}Suponha que queremos consultar o usuário cujo nome de usuário é Zhangsan
http://localhost:8080 ? q=username=zhangsanSuponha que queremos consultar o nome de usuário Nome de usuário Zhang
http://localhost:8080 ? q=username~ > =zhangSuponha que queremos consultar usuários com idade superior a 20
http://localhost:8080 ? q=age > 20Suponha que queremos consultar usuários cujo nome de usuário é igual a Zhagnsan e a senha é igual a 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456Suponha que queremos consultar usuários cujo nome de usuário é igual a Zhagnsan e a senha é igual a 123456
http://localhost:8080 ? q=username=zhangsan & q=password=123456Suponha que queremos consultar o usuário cujo nome de usuário é igual a Zhagnsan, ou Usename é igual a Lisi
Você pode adicionar uma consulta condicional de agrupamento e gcond para implementá -la
http://localhost:8080 ? q=A.username=zhangsan & q=B.username=lisi & gcond=A | BPrecisamos apenas de uma linha de código para todas as consultas de tabela única.
A partir das etapas acima, podemos ver que a integração Gorm-Plus é muito simples. Basta adicionar uma linha de código depois de inicializar Gorm gplus.Init(gormDb)
Está pronto para usar. Além disso, também é fácil usar Gorm-Plus , e a consulta de listagem pode ser concluída com apenas uma linha de código.
No entanto, o poder do Gorm-Plus é muito mais do que isso.
Para mais documentos, verifique: https://github.com/acmestack/gorm-plus/wiki
Adicione WeChat: Afumubit, Nota: GPLUS