增加查询可以获取父类属性的功能

This commit is contained in:
2020-11-02 00:02:56 +08:00
parent 112dd624dc
commit 227035fa78
2 changed files with 16 additions and 5 deletions

View File

@@ -28,7 +28,7 @@ interface IApplication {
} catch (ex: Exception) { } catch (ex: Exception) {
msg.status = Status.Error msg.status = Status.Error
msg.message = if (error.isEmpty()) ex.message ?: "" else "$error: ${ex.message}" msg.message = if (error.isEmpty()) ex.message ?: "" else "$error: ${ex.message}"
logger?.error(this, ex, "$error: ${ex.message}") logger?.error(this, ex, "[$name]$error: ${ex.message}")
} }
return msg return msg
} }
@@ -42,7 +42,7 @@ interface IApplication {
process(msg) process(msg)
logger?.debug(this, "$name business execute success") logger?.debug(this, "$name business execute success")
} catch (ex: Exception) { } catch (ex: Exception) {
logger?.error(this, ex, "$error。异常消息将抛出!: ${ex.message}") logger?.error(this, ex, "[$name]$error。异常消息将抛出!: ${ex.message}")
throw RuntimeException(error, ex) throw RuntimeException(error, ex)
} }
return msg return msg

View File

@@ -27,7 +27,7 @@ open class MongoQuery(var template: MongoTemplate, var logger: ILogger? = null)
var validViewCollection = false var validViewCollection = false
override fun <TView> list(params: Map<String, Any>?, clazz: Class<TView>): List<TView> { override fun <TView> list(params: Map<String, Any>?, clazz: Class<TView>): List<TView> {
val fields = clazz.fieldNames() val fields = this.fields(clazz)
val query = Query() val query = Query()
query.where(params, clazz) query.where(params, clazz)
query.select(fields.toTypedArray()) query.select(fields.toTypedArray())
@@ -41,7 +41,7 @@ open class MongoQuery(var template: MongoTemplate, var logger: ILogger? = null)
override fun <TView> paging(params: Params, clazz: Class<TView>): Page<TView> { override fun <TView> paging(params: Params, clazz: Class<TView>): Page<TView> {
val query = Query() val query = Query()
val fields = clazz.fieldNames() val fields = this.fields(clazz)
val result = Page<TView>(params.page, params.size) val result = Page<TView>(params.page, params.size)
result.total = this.count(params.parameters, clazz) result.total = this.count(params.parameters, clazz)
//如果总数和索引相同,说明该页没有数据,直接跳到上一页 //如果总数和索引相同,说明该页没有数据,直接跳到上一页
@@ -61,12 +61,23 @@ open class MongoQuery(var template: MongoTemplate, var logger: ILogger? = null)
return this.template.findOne(whereId(id), clazz, this.collection(clazz)) return this.template.findOne(whereId(id), clazz, this.collection(clazz))
} }
fun <TView> fields(clazz: Class<TView>): List<String> {
val fields = mutableListOf<String>()
fields.addAll(clazz.fieldNames())
var parent = clazz.superclass
while (parent != Any::class.java) {
fields.addAll(clazz.superclass.fieldNames())
parent = parent.superclass
}
return fields
}
/** /**
* 获取collection * 获取collection
*/ */
fun <TView> collection(clazz: Class<TView>): String { fun <TView> collection(clazz: Class<TView>): String {
val table: Table? = clazz.getDeclaredAnnotation( val table: Table? = clazz.getDeclaredAnnotation(
Table::class.java Table::class.java
) )
return if (table != null) return if (table != null)
return table.name return table.name