# iris-pagination **Repository Path**: ostaer/iris-pagination ## Basic Information - **Project Name**: iris-pagination - **Description**: 基于gorm实现的iris分页中间件 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2020-02-10 - **Last Updated**: 2023-03-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # isis-pagination #### 介绍 基于gorm实现的iris分页中间件 #### 使用说明 1.引入 ```go import "gitee.com/ostaer/iris-pagination" ``` 2.使用中间件 ```go app := iris.New() paginationHandler := pagination.New(&pagination.CustomeParser{}) app.Get("/test", paginationHandler) ``` 3.gorm引用查询数据 测试请求如[`middleware_test.go` 103-108行](https://gitee.com/ostaer/iris-pagination/blob/master/middleware_test.go#L103-L108) ` GET /test3?page=1&&size=3&&order=desc&&order_by=id&&is_child=true&&child_relation=1&&search.1.key=age&&search.1.value=5&&search.1.exactly=true&&search.2.key=email&&search.2.value=user-1,user-2&&search.2.exactly=false ` 查询处理如[`middleware_test.go` 203-206行](https://gitee.com/ostaer/iris-pagination/blob/master/middleware_test.go#L203-L206) ```go // SELECT count(*) FROM `users` WHERE ((`age` = "5") or ((`email` like "%user-1%") or (`email` like "%user-2%"))) DB.Model(&User{}).Scopes(pagination.PaginationScope(query, ip.Count)).Count(&count) // SELECT * FROM `users` WHERE ((`age` = "5") or ((`email` like "%user-1%") or (`email` like "%user-2%"))) ORDER BY id desc LIMIT 3 OFFSET 0 DB.Model(&User{}).Scopes(pagination.PaginationScope(query)).Find(&users) ``` 更多例子 参考[middleware_test.go](https://gitee.com/ostaer/iris-pagination/blob/master/middleware_test.go)文件 #### 文件说明 |文件|说明| |--|--| | [model.go](https://gitee.com/ostaer/iris-pagination/blob/master/model.go) | 分页查询相关struct的定义, 如`PaginationQuery` | | [customParser.go](https://gitee.com/ostaer/iris-pagination/blob/master/customParser.go) | 负责解析查询参数到`PaginationQuery` | | [resolver.go](https://gitee.com/ostaer/iris-pagination/blob/master/resolver.go) | 负责解析`PaginationQuery`到gorm.DB Scopes | | [middleware.go](https://gitee.com/ostaer/iris-pagination/blob/master/middleware.go) | 实现兼容iris的中间件 | #### TODO - [数据库字段隐式转换类型,无法使用索引问题](https://gitee.com/ostaer/iris-pagination/blob/master/resolver.go#L128)