From fa966733c850e87c987c69adc079c3abd918b1dd Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 24 May 2020 22:51:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=EF=BC=9A=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=80=BB=E6=95=B0=E5=92=8C=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E7=9B=B8=E5=90=8C=EF=BC=8C=E8=AF=B4=E6=98=8E=E8=AF=A5=E9=A1=B5?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=95=B0=E6=8D=AE=EF=BC=8C=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E4=B8=8A=E4=B8=80=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/synebula/gaea/mongo/query/MongoGenericQuery.kt | 5 +++++ .../kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt index 46dd9a2..ab6b081 100644 --- a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt +++ b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoGenericQuery.kt @@ -103,6 +103,11 @@ open class MongoGenericQuery(var template: MongoTemplate, var logger: ILo val fields = this.clazz!!.fieldNames() val result = PagingData(param.page, param.size) result.total = this.count(param.parameters) + //如果总数和索引相同,说明该页没有数据,直接跳到上一页 + if (result.total == result.index) { + param.page -= 1 + result.page -= 1 + } query.select(fields.toTypedArray()) query.where(param.parameters, this.clazz!!) query.with(order(param.orderBy)) diff --git a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt index baa4e37..b5fabe8 100644 --- a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt +++ b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/query/MongoQuery.kt @@ -48,12 +48,17 @@ open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQ } override fun paging(param: PagingParam, clazz: Class): PagingData { + val query = Query() val fields = clazz.fieldNames() val result = PagingData(param.page, param.size) result.total = this.count(param.parameters, clazz) - val query = Query() - query.where(param.parameters, clazz) + //如果总数和索引相同,说明该页没有数据,直接跳到上一页 + if (result.total == result.index) { + param.page -= 1 + result.page -= 1 + } query.select(fields.toTypedArray()) + query.where(param.parameters, clazz) query.with(order(param.orderBy)) query.skip(param.index).limit(param.size) result.data = this.repo.find(query, clazz, this.collection(clazz))