diff --git a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/MongoExt.kt b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/MongoExt.kt index 2a82aeb..45e7ce9 100644 --- a/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/MongoExt.kt +++ b/src/gaea.mongo/src/main/kotlin/com/synebula/gaea/mongo/MongoExt.kt @@ -10,7 +10,7 @@ import java.lang.reflect.Field /** - * 获取查询条件 + * 获取查询字段列表 * * @param fields 字段列表 */ 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 4eef9f2..46dd9a2 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 @@ -1,6 +1,6 @@ package com.synebula.gaea.mongo.query -import com.synebula.gaea.extension.fields +import com.synebula.gaea.extension.fieldNames import com.synebula.gaea.extension.firstCharLowerCase import com.synebula.gaea.log.ILogger import com.synebula.gaea.mongo.order @@ -80,7 +80,7 @@ open class MongoGenericQuery(var template: MongoTemplate, var logger: ILo override fun list(params: Map?): List { this.check() return if (this.clazz != null) { - val fields = this.clazz!!.fields() + val fields = this.clazz!!.fieldNames() val query = Query() query.select(fields.toTypedArray()) query.where(params, this.clazz!!) @@ -100,11 +100,11 @@ open class MongoGenericQuery(var template: MongoTemplate, var logger: ILo this.check() return if (this.clazz != null) { val query = Query() - val fields = this.clazz!!.fields() + val fields = this.clazz!!.fieldNames() val result = PagingData(param.page, param.size) result.total = this.count(param.parameters) - query.where(param.parameters, this.clazz!!) query.select(fields.toTypedArray()) + query.where(param.parameters, this.clazz!!) query.with(order(param.orderBy)) query.skip(param.index).limit(param.size) result.data = this.template.find(query, this.clazz!!, this.collection) 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 3300ead..baa4e37 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 @@ -1,6 +1,6 @@ package com.synebula.gaea.mongo.query -import com.synebula.gaea.extension.fields +import com.synebula.gaea.extension.fieldNames import com.synebula.gaea.extension.firstCharLowerCase import com.synebula.gaea.log.ILogger import com.synebula.gaea.mongo.order @@ -35,7 +35,7 @@ open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQ var validViewCollection = false override fun list(params: Map?, clazz: Class): List { - val fields = clazz.fields() + val fields = clazz.fieldNames() val query = Query() query.where(params, clazz) query.select(fields.toTypedArray()) @@ -48,7 +48,7 @@ open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQ } override fun paging(param: PagingParam, clazz: Class): PagingData { - val fields = clazz.fields() + val fields = clazz.fieldNames() val result = PagingData(param.page, param.size) result.total = this.count(param.parameters, clazz) val query = Query() diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/extension/ClassExt.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/extension/ClassExt.kt index c7afc3a..dafe84e 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/extension/ClassExt.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/extension/ClassExt.kt @@ -1,32 +1,12 @@ package com.synebula.gaea.extension -import java.lang.reflect.Field -import java.util.* - /** - * 系统类型 + * 获取对象字段信息字符串列表。 */ -val SystemClasses = arrayOf( - "String", - "Date", - "Int", - "Double", - "Float", - "BigDecimal", - "Decimal") - -/** - * 深度获取所有字段信息字符串列表。 - * @param prefix 前缀字符串 - */ -fun Class<*>.fields(prefix: String = ""): List { +fun Class<*>.fieldNames(): List { val names = mutableListOf() this.declaredFields.forEach { field -> - val fullName = if (prefix.isNotEmpty()) "$prefix.${field.name}" else field.name - names.add(fullName) - if (!field.type.isPrimitive && !field.type.isArray && !SystemClasses.contains(field.type.simpleName)) { - names.addAll(field.type.fields(fullName)) - } + names.add(field.name) } return names }