From 44ce355cffd7404349ae9334cb29b6fd88a2805f Mon Sep 17 00:00:00 2001 From: rainy Date: Wed, 10 Jul 2024 14:49:24 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20queryOne,queryOneAs=E5=9C=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=BB=93=E6=9E=9C=E4=B8=BAnull=E6=97=B6=E4=BB=8D?= =?UTF-8?q?=E8=BF=9B=E8=A1=8CqueryRow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/kotlin/extensions/db/DbExtensions.kt | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/mybatis-flex-kotlin-extensions/src/main/kotlin/extensions/db/DbExtensions.kt b/mybatis-flex-kotlin-extensions/src/main/kotlin/extensions/db/DbExtensions.kt index f8885df..f39c857 100644 --- a/mybatis-flex-kotlin-extensions/src/main/kotlin/extensions/db/DbExtensions.kt +++ b/mybatis-flex-kotlin-extensions/src/main/kotlin/extensions/db/DbExtensions.kt @@ -81,14 +81,19 @@ val KClass.baseMapperOrNull: BaseMapper? inline fun queryOne( vararg columns: QueryColumn, init: QueryScope.() -> Unit -): E? = E::class.baseMapperOrNull?.selectOneByQuery(queryScope(columns = columns, init = init)) - ?: E::class.tableInfo.let { - queryRow(schema = it.schema, tableName = it.tableName, columns = columns) { - init() - // 如果未调用select方法,则默认查询所有列 - if (this.hasSelect().not()) select(E::class.allColumns) - }?.toEntity(E::class.java) - } +): E? { + val baseMapper = E::class.baseMapperOrNull + return if (baseMapper != null) + baseMapper.selectOneByQuery(queryScope(columns = columns, init = init)) + else + E::class.tableInfo.let { + queryRow(schema = it.schema, tableName = it.tableName, columns = columns) { + init() + // 如果未调用select方法,则默认查询所有列 + if (this.hasSelect().not()) select(E::class.allColumns) + }?.toEntity(E::class.java) + } +} /** * 通过条件查询一条数据,并转换成指定类型 @@ -99,14 +104,20 @@ inline fun queryOne( inline fun queryOneAs( vararg columns: QueryColumn, init: QueryScope.() -> Unit -): T? = E::class.baseMapperOrNull?.selectOneByQueryAs(queryScope(columns = columns, init = init), T::class.java) - ?: E::class.tableInfo.let { - queryRow(schema = it.schema, tableName = it.tableName, columns = columns) { - init() - // 如果未调用select方法,则默认查询所有列 - if (this.hasSelect().not()) select(T::class.allColumns) - }?.toEntity(T::class.java) +): T? { + val baseMapper = E::class.baseMapperOrNull + return if (baseMapper != null) { + baseMapper.selectOneByQueryAs(queryScope(columns = columns, init = init), T::class.java) + } else { + E::class.tableInfo.let { + queryRow(schema = it.schema, tableName = it.tableName, columns = columns) { + init() + // 如果未调用select方法,则默认查询所有列 + if (this.hasSelect().not()) select(T::class.allColumns) + }?.toEntity(T::class.java) + } } +} /** * 通过条件查询多条数据 -- Gitee